Java-Collection源码分析(十二)——SortedMap和NavigableMap

来源:互联网 发布:熊猫智能采集软件 编辑:程序博客网 时间:2024/05/01 15:34

一、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,包括里面红黑树的内容!
阅读全文
0 0
原创粉丝点击