TreeMap是基于红黑树的Navigablemap实现,而NavigableMap继承于SortedMap接口。
SortedMap是基于一种基于其key进行排序的Map,其提供的接口方法如下:
方法摘要 | |
Comparator<? super K> | comparator() 返回map中用来对key进行排序的comparator(比较器),如果map使用自然排序,则返回null |
SortedMap<K,V> | subMap(K fromKey, K toKey) 返回SortedMap中从fromKey到toKey的子SortedMap |
SortedMap<K,V> | headMap(K toKey) 返回SortedMap中key小于toKey的子SortedMap |
SortedMap<K,V> | tailMap(K fromKey) 返回SortedMap中key大于或等于fromKey的子SortedMap |
K | firstKey() 返回SortedMap中的第一个(最小的)key |
K | lastKey() 返回SortedMap中的最后一个(最大的)key |
Set<K> | keySet() 返回SortedMap中所有的key组成的Set |
Collection<V> | values() 返回SortedMap中所有的value组成的Collection |
Set<Map.Entry<K, V>> | entrySet() 返回SortedMap中所有的entry组成的Set |
NavigableMap扩展了 SortedMap,具有了针对给定搜索目标返回最接近匹配项的导航方法。方法 lowerEntry、floorEntry、ceilingEntry 和 higherEntry 分别返回与小于、小于等于、大于等于、大于给定键的键关联的 Map.Entry 对象,如果不存在这样的键,则返回 null。类似地,方法 lowerKey、floorKey、ceilingKey 和 higherKey 只返回关联的键。所有这些方法是为查找条目而不是遍历条目而设计的。
可以按照键的升序或降序访问和遍历 NavigableMap。descendingMap 方法返回映射的一个视图,该视图表示的所有关系方法和方向方法都是逆向的。升序操作和视图的性能很可能比降序操作和视图的性能要好。subMap、headMap 和 tailMap 方法与名称相似的 SortedMap 方法的不同之处在于:可以接受用于描述是否包括(或不包括)下边界和上边界的附加参数。任何 NavigableMap 的 Submap 必须实现 NavigableMap 接口。
此外,此接口还定义了 firstEntry、pollFirstEntry、lastEntry 和 pollLastEntry 方法,它们返回和/或移除最小和最大的Entry(如果存在),否则返回 null。
subMap(K, K)、headMap(K) 和 tailMap(K) 方法被指定为返回 SortedMap,以允许现有 SortedMap 实现能相容地改进为实现 NavigableMap,但鼓励此接口的扩展和实现重写这些方法以返回 NavigableMap。类似地,可以重写 SortedMap.keySet() 以返回 NavigableSet。
其提供的接口方法如下:
方法摘要 | |
Map.Entry<K,V> | lowerEntry(K key) 返回小于给定key的最大key对应的Entry。如果不存在,返回null |
K | lowerKey(K key) 返回小于给定key的最大key。如果不存在,返回null |
Map.Entry<K,V> | floorEntry(K key) 返回小于或等于给定key的最大key对应的Entry。如果不存在,返回null |
K | floorKey(K key) 返回小于或等于给定key的最大key。如果不存在,返回null |
Map.Entry<K,V> | ceilingEntry(K key) 返回大于或等于给定key的最小key对应的Entry。如果不存在,返回null |
K | ceilingKey(K key) 返回大于或等于给定key的最小key。如果不存在,返回null |
Map.Entry<K,V> | higherEntry(K key) 返回大于给定key的最小key对应的Entry。如果不存在,返回null |
K | higherKey(K key) 返回大于给定key的最小key。如果不存在,返回null |
Map.Entry<K,V> | firstEntry() 返回最小key对应的Entry。如果不存在,返回null |
Map.Entry<K,V> | lastEntry() 返回最大key对应的Entry。如果不存在,返回null |
Map.Entry<K,V> | pollFirstEntry() 删除并返回最小key对应的Entry。如果不存在,返回null |
Map.Entry<K,V> | pollLastEntry() 删除并返回最大key对应的Entry。如果不存在,返回null |
NavigableMap<K,V> | descendingMap() 返回map的一个逆向视图 |
NavigableSet<K> | navigableKeySet() 返回map的所有key的视图 |
NavigableSet<K> | descendingKeySet() 返回map的所有key的一个逆向视图 |
NavigableMap<K,V> | subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) 返回map中从toKey到fromKey的一个视图 |
NavigableMap<K,V> | headMap(K toKey, boolean inclusive) 返回map中小于或等于toKey的一个视图 |
NavigableMap<K,V> | tailMap(K fromKey, boolean inclusive) 返回map中大于或等于fromKey的一个视图 |
SortedMap<K,V> | subMap(K fromKey, K toKey) 等同于subMap(fromKey, true, toKey, false) |
SortedMap<K,V> | headMap(K toKey) 等同于headMap(toKey, false) |
SortedMap<K,V> | tailMap(K fromKey) 等同于tailMap(fromKey, true) |