package java.util;
//在有序Map集合中针对给定搜索目标返回最接近匹配项的导航方法
public interface NavigableMap<K, V> extends SortedMap<K, V> {
    // 找到第一个比给定的key小的键值对
    Map.Entry<K, V> lowerEntry(K key);

    // 找到第一个比给定的key小的key
    K lowerKey(K key);

    // 找到第一个小于或等于给定key的键值对
    Map.Entry<K, V> floorEntry(K key);

    // 找到第一个小于或等于给定key的key
    K floorKey(K key);

    //找到第一个大于或等于给定key的键值对
    Map.Entry<K, V> ceilingEntry(K key);

    //找到第一个大于或等于给定key的key
    K ceilingKey(K key);

    // 找到第一个大于给定key的键值对
    Map.Entry<K, V> higherEntry(K key);

    // 找到第一个大于给定key的kkey
    K higherKey(K key);

    // 最小key的键值对
    Map.Entry<K, V> firstEntry();

    //最大key的键值对
    Map.Entry<K, V> lastEntry();

    //移除并返回最小key的键值对
    Map.Entry<K, V> pollFirstEntry();

    //移除并返回最大key的键值对
    Map.Entry<K, V> pollLastEntry();

    //返回倒序的NavigableMap
    NavigableMap<K, V> descendingMap();

    //返回key集合
    NavigableSet<K> navigableKeySet();

    //返回倒序的NavigableSet
    NavigableSet<K> descendingKeySet();

    //返回一个子Map,fromInclusive,toInclusive来决定左右端点的开闭
    NavigableMap<K, V> subMap(K fromKey, boolean fromInclusive,
            K toKey, boolean toInclusive);

    // 返回小于tokey的子NavigableMap,inclusive来决定是否包含tokey
    NavigableMap<K, V> headMap(K toKey, boolean inclusive);

    // 返回大于fromKey的子NavigableMap,inclusive来决定是否包含fromKey
    NavigableMap<K, V> tailMap(K fromKey, boolean inclusive);

    //获取一个SortedMap,左闭右开区间[formkey,tokey)
    SortedMap<K, V> subMap(K fromKey, K toKey);

    //获取一个SortedMap,小于tokey,不包含tokey
    SortedMap<K, V> headMap(K toKey);

    //获取一个SortedMap,大于等于tailMap,包含fromkey
    SortedMap<K, V> tailMap(K fromKey);
}