双列集合,与Collection集合不同(单列集合)。
K-此映射所维护的键的类型
V-映射值的类型
一个对象包括两个值(一个键,一个值)
值可以重复,键不能重复
1.Map是一个双列集合,一个元素包含两个值(一个key,一个value)
2.Map集合中的元素,key和value的数据类型可以相同,也可以不同。
3.Map集合中的元素,key不允许重复,value允许重复
4.Map集合中的元素,key和value是一一对应的
HashMap<K, V> implements Map<K, V>
底层是一个哈希表结构,HashSet就是new的HashMap,但是只使用了K
不同步,多线程,速度快
LinkedHashMap<K, V> extends HashMap<K, V>
Map接口的哈希表和链表列表实现,可预知的迭代顺序。
特点:
1.底层:哈希表 + 链表(保证迭代的顺序)
2.有序集合
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视图