一、概述
- Map是一种数据结构,以键值对的方式存储数据,每个键都是唯一的,且对应一个值,一种存放键值对的集合。
- java.util.Map,是一个顶级接口,提供了三个集合视图:所有key的集合、所有value的集合、所有key-value的集合。PS:任何对集合视图的修改都会影响原集合。
- Map与Set集合紧密相关,HashSet内部就维护了一个HashMap,实际上HashSet的新增,就是新增了一个key为值,value为默认对象的HashMap元素。
简单介绍一下Set结构特性:
1)无序性:集合中的每个元素都是无序的(java提供SortedSet有序Set)
2)互异性:集合中任意两个元素互异
3)确定性:元素存在与否是确定的
二、源码环境
JDK8
三、源码
先介绍java.util.Map接口,jdk8新增了默认方法。
public interface Map<K,V> { // 查询Operations 返回键值对的个数,如果元素个数大于Integer.MAX_VALUE,返回Integer.MAX_VALUE int size(); 如果Map没有包含元素,返回true;否则返回,false boolean isEmpty(); 是否包含指定key,包含返回true;否则返回,false boolean containsKey(Object key); 是否包含指定value,包含返回true;否则返回,false boolean containsValue(Object value); 根据指定的key,返回对应的value;如果不包含key,返回null V get(Object key); // 修改Operations 新增键值对,如果Map中包含key,返回旧的value;否则返回null V put(K key, V value); 删除集合中指定key,如果map不包含指定key,返回null V remove(Object key); // 批量Operations 将指定map新增至当前map void putAll(Map<? extends K, ? extends V> m); 清除当前map所有元素 void clear(); // 集合视图 返回所有key的set集合 Set<K> keySet(); 返回所有value的集合 Collection&