Java 集合之 Map
Map简介
需要注意,这里的Map单词并不是“地图”的意思,而是“映射”的意思。
Java中的集合可以看成两大类。第一类是Collection,用于单值存储,也就是说一次只能一个int、char、Object等等。第二类就是Map,它用于双值存储,其中的“双值”就是我们所说的“键值对”。为方便理解“键值对”,可以把它类比成一把钥匙对一把锁,其中键就是钥匙,值(数据)对应的就是锁。如果想要访问一个数据,只能通过它对应的那个“钥匙”来得到。
Map类对象,用来将“键”映射到“值”,并且一个Map中不能包含重复的键,每个键只能映射一个值。Map的子类中,比较常用的有:HashMap、TreeMap、LinkedHashMap。
与Set的关系
Set的子类,就是基于Map实现的,像HashSet基于HashMap,TreeSet基于TreeMap。但是为什么Set会基于Map实现呢?我们都知道,Set集合不能存在重复的元素,而这个效果就是依靠Map中“不能包含重复的键”的这种特性实现的,Set将数据存储在Map中的“键”的位置,这样的话,如果Set新增了一条重复数据,Map就会发现自己即将出现重复的键,就不添加这个数据,从而实现了Set集合不能存在重复的元素。
常用方法
1. V put(K key, V value)
用于添加一个键值对。
需要注意的是,这里的返回值。如果添加的键已经存在,则会用新的值覆盖原来这个键对应的旧值,并且把旧值返回出来。如果添加的键不存在,返回null。
2.void putAll(Map<? extends K, ? extends V> m)
用于添加一组键值对。
3.V remove(K key)
通过制定键,来删除对应的键值对。删除的值会被返回。
4.boolean remove(K key, V value)
通过制定键和值,来删除对应的键值对,只有键和值都匹配才会删除,否则不会删除。
5.Set<K> keySet()
以Set形式返回此Map中的所有的键。
6.void clear()
清空所有键值对。
7.boolean containsKey(Object key)
判断Map中是否有指定键。
8.boolean containsValue(Object value)
判断Map中是否有指定键。
9.get(Object key)
通过指定键获取值。