先来看看TreeMap的继承关系图:
来看看二者都定义了些什么方法
SortedMap
public interface SortedMap<K,V> extends Map<K,V> {
Comparator<? super K> comparator();
返回 [fromeKey, toKey),左闭右开,区间内的原map的一个视图
SortedMap<K,V> subMap(K fromKey, K toKey);
返回小于toKey的原map的一个视图
SortedMap<K,V> headMap(K toKey);
返回一个大于等于fromKey的视图,并不是将原map中大于等于formeKey的节点
复制重新组成一个新的map,对该map的操作等同于对原map相应位置的节点的操作,
就是提供一个大于等于fromeKey的视图
SortedMap<K,V> tailMap(K fromKey);
返回第一个(最小)的key
K firstKey();
返回最后(最大)的key
K lastKey();
Set<K> keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();
}
NavigableMap
public interface NavigableMap<K,V> extends SortedMap<K,V> {
返回原map中小于且最接近key的键值对(不包含等于)
Map.Entry<K,V> lowerEntry(K key);
返回小于且最接近key的键(不包含等于)
K lowerKey(K key);
返回小于且最接近key的键值对(包含等于)
Map.Entry<K,V> floorEntry(K key);
返回最接近的大于key的键(包含等于)
K floorKey(K key);
返回最接近的大于等于key的键值对
Map.Entry<K,V> ceilingEntry(K key);
返回最接近的大于等于key的键
K ceilingKey(K key);
返回最接近的大于key的键值对
Map.Entry<K,V> higherEntry(K key);
返回最接近的大于key的键
K higherKey(K key);
返回最小的Entry
Map.Entry<K,V> firstEntry();
返回最大的Entry
Map.Entry<K,V> lastEntry();
删除并返回最小的Entry
Map.Entry<K,V> pollFirstEntry();
删除并返回最大的Entry
Map.Entry<K,V> pollLastEntry();
返回一个与原map反向顺序的视图,仍然是同一个map,操作会互相影响
NavigableMap<K,V> descendingMap();
返回一个所有key键的视图
NavigableSet<K> navigableKeySet();
返回一个所有key键的视图,顺序是逆序
NavigableSet<K> descendingKeySet();
返回fromKey到toKey的map视图,通过fromInclusive与toInclusive控制是否包含
NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive,
K toKey, boolean toInclusive);
返回小于toKey的键值对的视图(inclusive为true代表包含等于)
NavigableMap<K,V> headMap(K toKey, boolean inclusive);
返回大于fromKey的键值对视图(inclusive为true代表包含等于)
NavigableMap<K,V> tailMap(K fromKey, boolean inclusive);
范围 [fromKey, toKey) 的视图
SortedMap<K,V> subMap(K fromKey, K toKey);
小于toKey的map视图
SortedMap<K,V> headMap(K toKey);
大于等于fromKey的map视图
SortedMap<K,V> tailMap(K fromKey);
}
接下来会在TreeMap中介绍上述方法的实现。