共计 1718 个字符,预计需要花费 5 分钟才能阅读完成。
1. 双列汇合
双列汇合也是用于存储数据的,然而与单列汇合不同的是,双列汇合是以 key=value
的模式存在的。每个局部蕴含两局部 key 和 value。
2. 特点
- Map 键是无序、不可反复和无索引的。
- Map 值是不做要求的。
- Map 存雷同键的值,后者会笼罩前者
- Map 的键和值都能够是 null
3. 双列汇合体系
- HashMap:键无序、不反复和无索引,值不做要求。(哈希表加值元素)
- LinkedHashMap:键有序、不反复和无索引,值不做要求。(哈希表加双向链表)
- TreeMap:键依照规定排序、不反复和无索引,值不做要求。(红黑树)
4. 罕用 API
Map 罕用 API:
办法名称 | 阐明 |
---|---|
V put(K key,V value) | 增加元素 |
V remove(Object key) | 依据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containsKey(Object key) | 判断汇合是否蕴含指定的键 |
boolean containsValue(Object value) | 判断汇合是否蕴含指定的值 |
boolean isEmpty() | 判断汇合是否为空 |
int size() | 汇合的长度,也就是汇合中键值对的个数 |
5. 格局
HashMap< 键类型, 值类型 > 变量名 = new HashMap<>()
6. Map 汇合遍历
6.1 键找值的办法
选取得 Map 的键,而后通过键取得对应的值。
public class HashMapTest1 {public static void main(String[] args) {HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "张三");
hashMap.put(2, "李四");
hashMap.put(3, "王二");
Set<Integer> integers = hashMap.keySet();
for (Integer integer : integers) {System.out.println("{key=" + integer + ", value=" + hashMap.get(integer) + "}");
}
}
}
6.2 迭代器形式
把键值对看成一个对象,取得这个对象汇合进行遍历
public class HashMapTest2 {public static void main(String[] args) {HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "张三");
hashMap.put(2, "李四");
hashMap.put(3, "王二");
Set<Map.Entry<Integer, String>> entries = hashMap.entrySet();
for (Map.Entry<Integer, String> entry : entries) {System.out.println("{key=" + entry.getKey() + ", value=" + entry.getValue() + "}");
}
}
}
6.3 Lambda 表达式
public class HashMapTest3 {public static void main(String[] args) {HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "张三");
hashMap.put(2, "李四");
hashMap.put(3, "王二");
// 传统匿名外部类
hashMap.forEach(new BiConsumer<Integer, String>() {
@Override
public void accept(Integer integer, String s) {System.out.println("{key=" + integer + ", value=" + s + "}");
}
});
// Lambda 表达式
hashMap.forEach((i, s) -> System.out.println("{key=" + i + ", value=" + s + "}"));
}
}
本章完结,用于集体学习和小白入门,大佬勿喷!心愿大家多多点赞珍藏撑持撑持!
源码【GitHub】【码云】
正文完