java.util.Map<k,v>集合
一、Map集合的特点
1、Map集合是一个双列集合,一个元素包含两个值,一个key,一个value。
2、Map集合中的元素,key和value的数据类型可以相同,也可以不同。
3、Map集合中的元素,key是不允许重复的,value是可以重复的。
4、Map集合中的元素,key和value是一一对应的。
二、java.util.HashMap<k,v>集合 implements Map<k,v>接口
HashMap集合的特点:
(1)HashMap集合底层是哈希表,查询的速度特别的快。
(2)HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致。
三、java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合
LinkedHashMap的特点:
(1)LinkedHashMap集合底层是哈希表+链表。
(2)LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的。
Map中的常用方法:
删除该Map对象中所有键值对;
void clear():
查询Map中是否包含指定的key值;
boolean containsKey(Object key):
查询Map中是否包含一个或多个value;
boolean containsValue(Object value):
返回map中包含的键值对所组成的Set集合,每个集合都是Map.Entry对象。
Set entrySet():
返回指定key对应的value,如果不包含key则返回null;
get():
查询该Map是否为空;
boolean isEmpty()
返回Map中所有key组成的集合;
Set keySet():
返回该Map里所有value组成的Collection。
Collection values()
添加一个键值对,如果集合中的key重复,则覆盖原来的键值对;
Object put(Object key,Object value)
将Map中的键值对复制到本Map中;
void putAll(Map m)
删除指定的key对应的键值对,并返回被删除键值对的value,如果不存在,则返回null;
Object remove(Object key):
删除指定键值对,删除成功返回true;
boolean remove(Object key,Object value):
返回该Map里的键值对个数;
int size():
内部类Entry
Map中包括一个内部类Entry,该类封装一个键值对,常用方法:
Object getKey():返回该Entry里包含的key值;
Object getvalue():返回该Entry里包含的value值;
Object setValue(V value):设置该Entry里包含的value值,并设置新的value值。
HashMap<String, Integer> hm = new HashMap<>();
//放入元素
hm.put("Harry",23);
hm.put("Jenny",24);
hm.put("XiaoLi",20);
System.out.println(hm);//{XiaoLi=20, Harry=23, Jenny=24}
System.out.println(hm.keySet());//[XiaoLi, Harry, Jenny]
System.out.println(hm.values());//[20, 23, 24]
Set<Map.Entry<String, Integer>> entries = hm.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}