Java 集合之 Map

 Map简介

Java 集合之 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)

通过指定键获取值。