一、Map接口
1.Map接口和Collection接口的区别
- collection中的集合中的元素是孤立的,理解为单身,向集合中储存元素采用的是一个个元素的储存方式,是单列结合
- Map中的集合元素是成对出现的,理解为夫妻,每个元素都是由键值对的形式存在的,可通过键查找到值,是双列集合。
- Map中不能包含重复的键,但是值可以重复
- Map中常用的子类有:HashMap集合 LinkedHashMap集合
2.HashMap<K,V>和LinkedHashMap<K,V>
- HashMap底层数据采用的是哈希表接口,所以,元素存取顺序不一致。由于要保证键的唯一不重复,所以,当键为自定义类型的时候,要注意重写自定义类型的equals和hashCode方法
- LinkedHashSet底层采用的是哈希表+链表接口,所以,元素的存取顺序是一致的。同样,保证键的唯一性,要重写hashCode和equals方法
3.Map中常用的方法
- get(obj):返回键对应的值,如果没有键,返回null
- put(K,V):向集合中增加键值对,注意如果集合中已经存在待添加键,那么会覆盖原值,并且返回被覆盖的值;如果原集合中不存在待添加的键,那么正常添加,返回null
- remove(K):在集合中移除键值对,如果有,返回被移除的值,如果没有,返回null
4.代码演示
/*
* Map集合中的常用方法
*/
public static void func1()
{
//创建HashMap
Map<String,String> map = new HashMap<String, String>();
//给Map添加元素
map.put("键1", "值1");
map.put("键2", "值2");
map.put("键3", "值3");
//获取元素
System.out.println(map.get("键1"));
System.out.println(map);
//移除元素
map.remove("键1");
//打印集合
System.out.println(map);
}
5.Entry
- 将键值对的对应关系封装成一个entry对象,用于集合的遍历。
- static iterface Map.Entry<K,V>
- K getKey():返回封装的Key
- V getValue();返回封装的value
6.Map集合的遍历
- 方式1:通过map.keySet();方法,得到键的Set集合,遍历Set集合,根据键获取值
- 方式2:通过map.entrySet();方法,得到entry的 set集合,遍历Set集合,使用getKey()和getValue()方法;
7.HashMap储存自定义类型键值对
- HashMap中存放自定义对象的时候,如果自定义对象作为Key存在,那么这时要保证对象唯一,即重写自定义类的equals和hashmap方法
- 如果要保证怎么存的就怎么取出,请使用LinkedHashMap