注意:Map接口是在java.util.Map 的包下,Map 接口不是 Collection 的子接口,它是使用键、值映射表来存储【Map 不能有重复的键(覆盖),每个键可以映射到最多一个值】。
Map 接口的实现类较多,在此我们关注 HashMap 、 TreeMap 、 HashTable 、 LinkedHashMap

public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, java.io.Serializable
public class LinkedHashMap<K,V>
extends HashMap<K,V>
implements Map<K,V>
public class Hashtable<K,V>
extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable
key 的 hash 计算调用的是 HashMap 中的 hash 方法hash 一样添加到链表尾部null ,但是 value 可以存 nullnull 作为键和值initialCapacity)为 11 ,默认负载因子( loadFactor )为 0.75fsynchronized修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMap 吧!,Hashtable已经过时了);Null key 和 Null value 的支持: HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个;Hashtable 不允许有null键和null值,否则会抛出 NullPointerException 。11,之后每次扩充,容量变为原来的 2n+1。16。之后每次扩充,容量变为原来的 2 倍。Map接口Set接口键值对对象put()添加元素add()添加元素 hashcodehashcode值,对于两个不同的对象来说hashcode 可能相同,所以还要用 equals() 方法用来判断对象的相等性. AbstractMap ,但是需要注意的是 TreeMap 它还实现了 NavigableMap 接口和 SortedMap 接口。NavigableMap接口让 TreeMap 有了对集合内元素的搜索的能力。SortedMap接口让 TreeMap 有了对集合中的元素根据键排序的能力。综上,相比于HashMap来说 TreeMap 主要多了对集合中的元素根据键排序的能力以及对集合内元素的搜索的能力。