Map 汇合
双列汇合,与 Collection 汇合不同(单列汇合)。
Map<K, V>
K- 此映射所保护的键的类型
V- 映射值的类型
一个对象包含两个值(一个键,一个值)
值能够反复,键不能反复
特点:
1.Map 是一个双列汇合,一个元素蕴含两个值(一个 key,一个 value)
2.Map 汇合中的元素,key 和 value 的数据类型能够雷同,也能够不同。
3.Map 汇合中的元素,key 不容许反复,value 容许反复
4.Map 汇合中的元素,key 和 value 是一一对应的
类 HashMap<K,V>
HashMap<K, V> implements Map<K, V>
底层是一个哈希表构造,HashSet 就是 new 的 HashMap,然而只应用了 K
不同步,多线程,速度快
子类 LinkedHashMap
LinkedHashMap<K, V> extends HashMap<K, V>
Map 接口的哈希表和链表列表实现,可预知的迭代程序。
特点:
1. 底层:哈希表 + 链表(保障迭代的程序)
2. 有序汇合
Map 接口中罕用办法
V put(K k, V value);
将指定的值与此映射中的指定键关联
返回值 V:
存储的时候,key 不反复,返回值 null
key 反复,用新的 value 替换 map 中反复的 value,返回被替换的 value
Map<String, String> map = new HashMap<>();
String hh = map.put("lichen", "gbb");
System.out.println(map);
{lichen=gbb}
System.out.println("V1 =" + hh);
// V1 = null
String hh2 = map.put("lichen", "gbb222");
System.out.println(map);
// {lichen=gbb222}
System.out.println("v2 =" + hh2);
// v2 = gbb
map.put("000", "gbb");
map.put("123", "gbb");
map.put("222", "gbb");
System.out.println(map);
// {000=gbb, 123=gbb, 222=gbb}
V get(Object key);
返回指定键所映射的值,如果此映射不蕴含该键的映射关系,返回 null
V remove(Object key);
如果存在一个键的映射关系,则将其从此映射中移除
Map<String, Integer> map = new HashMap<>();
map.put("123", 168);
map.put("456", 178);
map.put("789", 188);
System.out.println(map);
Integer v1 = map.remove("123");
System.out.println(map);
System.out.println(v1);
// {123=168, 456=178, 789=188}
// {456=178, 789=188}
// 168
boolean containsKey(Object key);
如果此映射蕴含指定键的映射关系,返回 true
Map<String, Integer> map = new HashMap<>();
map.put("123", 111);
map.put("456", 222);
map.put("789", 333);
boolean b = map.containsKey("123");
System.out.println(b); //true
boolean b1 = map.containsKey("1323");
System.out.println(b1); //false
Set<K> keySet();
返回此映射中蕴含的键的 Set 视图
Set<Map.Entry<K, V>> entrySet();
返回此映射蕴含的映射关系的 Set 视图