一、SortedMap
public interface SortedMap<K,V> extends Map<K,V> {
//返回用于对该地图中的键进行排序的比较器,如果此map使用其键的自然排序,则返回null。
Comparator<? super K> comparator();
//返回该地图部分的视图,其关键范围从fromKey(包括)到toKey(独占)。
SortedMap<K,V> subMap(K fromKey, K toKey);
//返回该map的部分key严格小于toKey的视图。
SortedMap<K,V> headMap(K toKey);
//返回此map部分的视图,其key大于或等于fromKey。
SortedMap<K,V> tailMap(K fromKey);
//返回当前在此map中的第一个(最低)key
K firstKey();
//返回当前在此map中的最后(最高)key。
K lastKey();
//返回此map中包含的key的Set视图。
Set<K> keySet();
//返回此映射中包含的value的集合视图。
Collection<V> values();
//返回此映射中包含的映射的Set视图。
Set<Map.Entry<K, V>> entrySet();
}
二、NavigableMap
扩展了SortedMap的导航方法,返回给定搜索目标的最接近的匹配。方法lowerEntry,floorEntry,ceilingEntry和higherEntry返回与键分别小于,小于或等于大于或等于且大于给定key的Map.Entry对象,如果没有这样的key,返回null。类似地,方法lowerKey,floorKey,ceilingKey和higherKey只返回相关的key。所有这些方法都设计用于定位,而不是遍历条目。
可以按升序或降序键顺序访问和遍历NavigableMap。 descendingMap方法返回map的视图,其中所有关系和方向方法都是反转的。升序操作和观点的性能可能比降序更快。方法subMap,headMap和tailMap与接受命名的SortedMap方法不同,用于接受描述下限和上限是包容性还是排除的附加参数。任何NavigableMap的子图都必须实现NavigableMap接口。
此接口另外定义了firstEntry,pollFirstEntry,lastEntry和pollLastEntry方法,返回和/或删除最小和最大的映射(如果有),否则返回null。
指定方法subMap(K,K),headMap(K)和tailMap(K)返回SortedMap以允许对SortedMap的现有实现进行兼容升级来实现NavigableMap,但是鼓励该接口的扩展和实现来覆盖这些方法返回NavigableMap。类似地,SortedMap.keySet()可以覆盖以返回NavigableSet。
public interface NavigableMap<K,V> extends SortedMap<K,V> {
//返回与严格小于给定key的最大key相关联的key-value映射,如果没有这样的key,则返回null
Map.Entry<K,V> lowerEntry(K key);
//返回严格小于给定key的最大key,如果没有这样的key,则返回null
K lowerKey(K key);
//返回与小于或等于给定key的最大key相关联的key-value映射,如果没有此key,则返回null
Map.Entry<K,V> floorEntry(K key);
//返回小于或等于给定key的最大key,如果没有这样的key,则返回null
K floorKey(K key);
//返回与大于或等于给定key的最小key相关联的key-value映射,如果没有此key,则返回null
Map.Entry<K,V> ceilingEntry(K key);
//返回大于或等于给定key的最小key,如果没有这样的key,则返回nul
K ceilingKey(K key);
// 返回严格大于给定的key,与最小key相关联的key-value映射,如果没有这样的键,则返回null。
Map.Entry<K,V> higherEntry(K key);
//返回严格大于给定键的最小键,如果没有这样的键返回null。
K higherKey(K key);
//返回与此映射中的最小键相关联的键值映射,如果映射为空,则返回null。
Map.Entry<K,V> firstEntry();
//返回与该地图中最大关键字关联的键值映射,如果地图为空,则返回null。
Map.Entry<K,V> lastEntry();
//删除并返回与该映射中的最小密钥相关联的键值映射,如果映射为空,则返回null。
Map.Entry<K,V> pollFirstEntry();
//删除并返回与该地图中最大键相关联的键值映射,如果地图为空,则返回null。
Map.Entry<K,V> pollLastEntry();
//返回此映射中包含的映射的反向排序视图。
NavigableMap<K,V> descendingMap();
//返回此映射中包含的键的NavigableSet视图。
NavigableSet<K> navigableKeySet();
//返回此映射中包含的键的相反顺序NavigableSet视图。
NavigableSet<K> descendingKeySet();
//返回该地图部分的视图,其关键范围从fromKey到toKey。
NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive,
K toKey, boolean toInclusive);
//返回该地图的部分的视图,其键值小于(或等于,如果包含值为true)toKey。
NavigableMap<K,V> headMap(K toKey, boolean inclusive);
//返回这个地图的部分的视图,其键大于(或等于,如果包含值为true)fromKey。
NavigableMap<K,V> tailMap(K fromKey, boolean inclusive);
//返回该地图部分的视图,其关键范围从fromKey(包括)到toKey(独占)。
SortedMap<K,V> subMap(K fromKey, K toKey);
//返回该地图的部分密钥严格小于toKey的视图。
SortedMap<K,V> headMap(K toKey);
//返回此地图部分的视图,其键大于或等于fromKey。
SortedMap<K,V> tailMap(K fromKey);
}
请给我一个动力和勇气去分析TreeMap,包括里面红黑树的内容!