概要
如上图
- Map是映射接口,存储的是Key-Value对
- AbstractMap继承的Map,实现了Map的大部分功能,Map的实现类都是继承AbstractMap来减少大量的代码。
- SortedMap继承Map,存储的是"有序的键值对(Key-Value)"。
- NavigableMap继承SortedMap,和SortedMap一样存储的都是有序的键值对,但是他还有一个导航的功能,可以返回大于/等于某个键值对的值,或者返回小于/等于某个键值对的值。
- TreeMap继承NavigableMap,实现了NavigableMap的接口,所有TreeMap存储的也是有序键值对。
- HashMap继承于AbstractMap,但是没有实现NavigableMap,所有他存储的键值对不保证有序。
- Hashtable的键值对也不保证有序,但是Hashtable没有继承AbstractMap,而是继承的Directionary,实现Map的接口。和HashMap的区别是,Hashtable是线程安全的;HashMap不是线程安全的。
- WeakHashMap的键是弱键。
Map
- Map是一个Key-value的映射接口。Map不能包含重复的键;每个键最多只能映射到一个值。
- Map提供三张Collection视图:键集,值集,键-值映射关系。
- Map的有些实现类可以保证键值对的映射顺序,有些不能。
- Map提供的返回值函数:entrySet:返回key-vlaue的键值对的Set集合;keySet:返回Key值的Set集合;values:返回value值的Collection集合
- Map提供相应的操作,如删除,增加,修改等。
NavigableMap
NavigableMap除了继承SortedMap的特性外,它的提供的功能可以分为4类:
第1类,提供操作键-值对的方法。
lowerEntry、floorEntry、ceilingEntry 和 higherEntry 方法,它们分别返回与小于、小于等于、大于等于、大于给定键的键关联的 Map.Entry 对象。
firstEntry、pollFirstEntry、lastEntry 和 pollLastEntry 方法,它们返回和/或移除最小和最大的映射关系(如果存在),否则返回 null。
第2类,提供操作键的方法。这个和第1类比较类似
lowerKey、floorKey、ceilingKey 和 higherKey 方法,它们分别返回与小于、小于等于、大于等于、大于给定键的键。
第3类,获取键集。
navigableKeySet、descendingKeySet分别获取正序/反序的键集。
第4类,获取键-值对的子集。