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

一、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,包括里面红黑树的内容!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值