所使用的jdk版本为1.8版本,先看一下NavigableMap<K,V>在JDK中Map的UML类图中的位置:
2.1.3 NavigableMap接口
接口NavigableMap<K,V> extends SortedMap<K,V>,是一个扩展的SortedMap,在继承SortedMap接口的基础之上,扩展了一些返回了给定搜索目标的最接近匹配项的方法。从上图可以看到,Navigable接口也是TreeMap类直接实现的接口。简单给其中的方法归类一下:
1、搜索并返回Key的方法:
(1)K lowerKey(K key);
返回NavigableMap中严格小于给定键的最大键;如果不存在这样的键,则返回 null
。
(2)K floorKey(K key);
返回NavigableMap中小于或等于给定键的最大键;如果不存在这样的键,则返回 null
。
(3)K higherKey(K key);
返回NavigableMap中严格大于给定键的最小键;如果不存在这样的键,则返回 null
。
(4)K ceilingKey(K key);
返回NavigableMap中大于或等于给定键的最小键;如果不存在这样的键,则返回 null
。
2、返回Map.Entry<K,V>结果的方法:
(1)Map.Entry<K,V> lowerEntry(K key);
返回一个键-值映射关系,它与严格小于给定键的最大键(即lowerKey(K key)返回的键对应的键值对)关联;如果不存在这样的键,则返回 null
。
(2)Map.Entry<K,V> floorEntry(K key);
返回一个键-值映射关系,它与小于或等于给定键的最大键关联(即floorKey(K key)返回的键对应的键值对);如果不存在这样的键,则返回 null
。
(3)Map.Entry<K,V> higherEntry(K key);
返回一个键-值映射关系,它与严格大于给定键的最小键关联(即higherKey(K key)返回的键对应的键值对);如果不存在这样的键,则返回 null
。
(4)Map.Entry<K,V> ceilingEntry(K key);
返回一个键-值映射关系,它与大于或等于给定键的最小键关联(即ceilingKey(K key)返回的键对应的键值对);如果不存在这样的键,则返回 null
。
(5)Map.Entry<K,V> firstEntry();
返回一个与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null
。
(6)Map.Entry<K,V> lastEntry();
返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null
。
(7)Map.Entry<K,V> pollFirstEntry();
移除并返回与此映射中的最小键关联的键-值映射关系;如果映射为空,则返回 null
。调用该方法之后,返回的键值对就不在该NavigableMap中了。
(8)Map.Entry<K,V> pollLastEntry();
移除并返回与此映射中的最大键关联的键-值映射关系;如果映射为空,则返回 null
。调用该方法之后,返回的键值对就不在该NavigableMap中了。
3、返回NavigableMap<K,V>结果的方法:
(1)NavigableMap<K,V> descendingMap();
返回此映射中所包含映射关系的逆序视图。降序映射受此映射的支持,因此对映射的更改将反映在降序映射中,反之亦然。
(2)NavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive);
返回此NavigableMap的部分视图,其键的范围从 fromKey
到 toKey
。如果 fromKey
和 toKey
相等,则返回的映射为空,除非 fromExclusive
和 toExclusive
都为 true。返回的映射受此映射支持,因此返回映射中的更改将反映在此映射中,反之亦然。返回的映射支持此映射支持的所有可选映射操作。
(3)NavigableMap<K,V> headMap(K toKey, boolean inclusive);
返回此NavigableMap映射的部分视图,其键小于(或等于,如果参数 inclusive
为 true) toKey
。返回的映射受此映射支持,因此返回映射中的更改将反映在此映射中,反之亦然。返回的映射支持此映射支持的所有可选映射操作。
(4)NavigableMap<K,V> tailMap(K fromKey, boolean inclusive);
返回此NavigableMap映射的部分视图,其键大于(或等于,如果 inclusive
为 true) fromKey
。返回的映射受此映射支持,因此返回映射中的更改将反映在此映射中,反之亦然。返回的映射支持此映射支持的所有可选映射操作。
3、返回NavigableSet<K>结果的方法:
(1)NavigableSet<K> navigableKeySet();
返回此映射中所包含键的 NavigableSet 视图。set 的迭代器按升序返回键。set 受映射支持,因此对映射的更改将反映在 set 中,反之亦然。如果正在对 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。set 支持元素移除,即通过 Iterator.remove、 Set.remove、 removeAll、 retainAll 和 clear 操作从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
(2)NavigableSet<K> descendingKeySet();
返回此映射中所包含键的逆序 NavigableSet 视图。set 的迭代器按降序返回键。set 受映射支持,因此对映射的更改将反映在 set 中,反之亦然。如果正在对 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。set 支持元素移除,即通过 Iterator.remove、 Set.remove、 removeAll、 retainAll 和 clear 操作从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
4、重新定义的与SortedMap<K,V>中相同定义的方法:
(1)SortedMap<K,V> subMap(K fromKey, K toKey);
(2)SortedMap<K,V> headMap(K toKey);
(3)SortedMap<K,V> tailMap(K fromKey);
以上,从NavigableMap中定义的方法更可以看出,它就是对SortedMap<K,V>接口的进一步扩展。