Java中的Map【三】NavigableMap接口

       所使用的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>接口的進一步擴展。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章