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】 【码云】