JavaTM 2 Platform
Standard Ed. 6

java.util
介面 SortedMap<K,V>

型別參數:
K - 此映射所維護的鍵的型別
V - 映射值的型別
所有父級介面:
Map<K,V>
所有已知子介面:
ConcurrentNavigableMap<K,V>, NavigableMap<K,V>
所有已知實作類別:
ConcurrentSkipListMap, TreeMap

public interface SortedMap<K,V>
extends Map<K,V>

進一步提供關於鍵的總體排序Map。該映射是根據其鍵的自然順序進行排序的,或者根據通常在創建有序映射時提供的 Comparator 進行排序。對有序映射的 collection 視圖(由 entrySetkeySetvalues 方法返回)進行迭代時,此順序就會反映出來。要採用此排序方式,還需要提供一些其他操作(此介面是 SortedSet 的對應映射)。

插入有序映射的所有鍵都必須實作 Comparable 介面(或者被指定的比較器接受)。另外,所有這些鍵都必須是可互相比較的:對有序映射中的任意兩個鍵 k1k2 執行 k1.compareTo(k2)(或 comparator.compare(k1, k2))都不得拋出 ClassCastException。試圖違反此限制將導致違反規則的方法或者建構子調用拋出 ClassCastException

注意,如果有序映射要正確實作 Map 介面,則有序映射所維持的順序(無論是否提供了明確的比較器)都必須與 equals 一致。(有關與 equals 一致 的精確定義,請參閱 Comparable 介面或 Comparator 介面)。這是因為 Map 介面是按照 equals 操作定義的,但有序映射使用它的 compareTo(或 compare)方法對所有鍵進行比較,因此從有序映射的角度來看,此方法認為相等的兩個鍵就是相等的。即使順序與 equals 不一致,階層樹映射的行為仍然 定義良好的,只不過沒有遵守 Map 介面的常規協定。

所有通用有序映射實作類別都應該提供 4 個「標準」建構子:1) void(無參數)建構子,它創建一個空的有序映射,按照鍵的自然順序進行排序。2) 帶有一個 Comparator 型別參數的建構子,它創建一個空的有序映射,根據指定的比較器進行排序。3) 帶有一個 Map 型別參數的建構子,它創建一個新的有序映射,其鍵-值映射關係與參數相同,按照鍵的自然順序進行排序。4) 帶有一個 SortedMap 型別參數的建構子,它創建一個新的有序映射,其鍵-值映射關係和排序方法與輸入的有序映射相同。無法保證強制實施此建議,因為介面不能包含建構子。

註:一些方法返回具有受限鍵範圍的子映射。這些範圍區間是半開的,也就是說,它們包括低端點,但不包括高端點(如果適用)。如果需要一個閉區間(同時包括兩個端點),且鍵型別允許計算給定鍵值的後繼值,則只需要請求從 lowEndpointsuccessor(highEndpoint) 的子區間。例如,假設 m 是一個用字元串作為鍵的映射。下面的語句將得到一個套件含 m 中鍵在 lowhigh(包括)之間的所有鍵-值映射關係的視圖:

   SortedMap<String, V> sub = m.subMap(low, high+"\0");
可使用類似的技術產生一個開區間 (兩個端點都不包括)。下面的語句將得到一個套件含 m 中鍵在 lowhigh(不包括)之間的所有鍵-值映射關係的視圖:
   SortedMap<String, V> sub = m.subMap(low+"\0", high);

此介面是 Java Collections Framework 的成員。

從以下版本開始:
1.2
另請參見:
Map, TreeMap, SortedSet, Comparator, Comparable, Collection, ClassCastException

巢狀類別摘要
 
從介面 java.util.Map 繼承的巢狀類別/介面
Map.Entry<K,V>
 
方法摘要
 Comparator<? super K> comparator()
          返回對此映射中的鍵進行排序的比較器;如果此映射使用鍵的自然順序,則返回 null
 Set<Map.Entry<K,V>> entrySet()
          返回在此映射中包含的映射關係的 Set 視圖。
 K firstKey()
          返回此映射中當前第一個(最低)鍵。
 SortedMap<K,V> headMap(K toKey)
          返回此映射的部分視圖,其鍵值嚴格小於 toKey
 Set<K> keySet()
          返回在此映射中所包含鍵的 Set 視圖。
 K lastKey()
          返回映射中當前最後一個(最高)鍵。
 SortedMap<K,V> subMap(K fromKey, K toKey)
          返回此映射的部分視圖,其鍵值的範圍從 fromKey(包括)到 toKey(不包括)。
 SortedMap<K,V> tailMap(K fromKey)
          返回此映射的部分視圖,其鍵大於等於 fromKey
 Collection<V> values()
          返回在此映射中所包含值的 Collection 視圖。
 
從介面 java.util.Map 繼承的方法
clear, containsKey, containsValue, equals, get, hashCode, isEmpty, put, putAll, remove, size
 

方法詳細資訊

comparator

Comparator<? super K> comparator()
返回對此映射中的鍵進行排序的比較器;如果此映射使用鍵的自然順序,則返回 null

返回:
用來對此映射中的鍵進行排序的比較器;如果此映射使用鍵的自然順序,則返回 null

subMap

SortedMap<K,V> subMap(K fromKey,
                      K toKey)
返回此映射的部分視圖,其鍵值的範圍從 fromKey(包括)到 toKey(不包括)。(如果 fromKeytoKey 相等,則返回映射為空。)返回的映射受此映射支持,所以在返回映射中的更改將反映在此映射中,反之亦然。返回的映射支持此映射支持的所有可選映射操作。

如果試圖在返回映射的範圍之外插入鍵,則返回的映射將拋出 IllegalArgumentException

參數:
fromKey - 返回映射中鍵的低端點(包括)
toKey - 返回映射中鍵的高端點(不包括)
返回:
此映射的部分視圖,其鍵值的範圍從 fromKey(包括)到 toKey(不包括)
拋出:
ClassCastException - 如果無法使用此映射的比較器(如果此映射沒有比較器,則使用自然順序)比較 fromKeytoKey。如果 fromKeytoKey 不能與映射中當前鍵進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException - 如果 fromKeytoKey 為 null,並且此映射不允許使用 null 鍵
IllegalArgumentException - 如果 fromKey 大於 toKey;如果此映射本身有範圍限制,並且 fromKeytoKey 位於範圍的邊界之外

headMap

SortedMap<K,V> headMap(K toKey)
返回此映射的部分視圖,其鍵值嚴格小於 toKey。返回的映射受此映射支持,所以在返回映射中的更改將反映在映射中,反之亦然。返回的映射支持此映射支持的所有可選映射操作。

如果試圖在返回映射的範圍之外插入鍵,則返回的映射將拋出 IllegalArgumentException

參數:
toKey - 返回映射中鍵的高端點(不包括)
返回:
此映射的部分視圖,該映射的鍵嚴格小於 toKey
拋出:
ClassCastException - 如果 toKey 與此映射的比較器不相容(如果該映射沒有比較器;如果 toKey 沒有實作 Comparable)。如果 toKey 不能與映射中的當前鍵進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException - 如果 toKey 為 null,並且此映射不允許使用 null 鍵
IllegalArgumentException - 如果此映射本身有範圍限制,並且 toKey 位於範圍的邊界之外

tailMap

SortedMap<K,V> tailMap(K fromKey)
返回此映射的部分視圖,其鍵大於等於 fromKey。返回的映射受此映射支持,所以在返回映射中的更改將反映在映射中,反之亦然。返回的映射支持此映射支持的所有可選映射操作。

如果試圖在返回映射的範圍之外插入鍵,則返回的映射將拋出 IllegalArgumentException

參數:
fromKey - 返回映射中鍵的低端點(包括)
返回:
此映射的部分視圖,其鍵大於等於 fromKey
拋出:
ClassCastException - 如果 fromKey 與此映射的比較器不相容(如果該映射沒有比較器;如果 fromKey 沒有實作 Comparable)。如果 fromKey 不能與映射中的當前鍵進行比較,則實作可以(但不是必須)拋出此異常。
NullPointerException - 如果 fromKey 為 null,並且此映射不允許使用 null 鍵
IllegalArgumentException - 如果此映射本身有範圍限制,並且 fromKey 位於範圍的邊界之外

firstKey

K firstKey()
返回此映射中當前第一個(最低)鍵。

返回:
此映射中當前第一個(最低)鍵
拋出:
NoSuchElementException - 如果此映射為空

lastKey

K lastKey()
返回映射中當前最後一個(最高)鍵。

返回:
此映射中當前最後一個(最高)鍵
拋出:
NoSuchElementException - 如果此映射為空

keySet

Set<K> keySet()
返回在此映射中所包含鍵的 Set 視圖。該 set 的迭代器將按升序返回這些鍵。該 set 受映射支持,所以對映射的更改將反映在此 set 中,反之亦然。如果對該 set 進行迭代的同時修改了映射(通過迭代器自己的 remove 操作除外),則迭代結果是不確定的。此 set 支持元素移除,通過 Iterator.removeSet.removeremoveAllretainAllclear 操作可從映射中移除相應的映射關係。它不支持 addaddAll 操作。

指定者:
介面 Map<K,V> 中的 keySet
返回:
此映射所包含的鍵的 set 視圖,按升序排序

values

Collection<V> values()
返回在此映射中所包含值的 Collection 視圖。該 collection 的迭代器將按對應鍵的升序返回這些值。該 collection 受映射支持,所以對映射的更改將反映在此 collection 中,反之亦然。如果對該 set 進行迭代的同時修改了映射(通過迭代器自己的 remove 操作除外),則迭代結果是不確定的。該 collection 支持元素的移除,通過 Iterator.removeCollection.removeremoveAllretainAllclear 操作可從映射中移除相應的映射關係。它不支持 addaddAll 操作。

指定者:
介面 Map<K,V> 中的 values
返回:
此映射所包含的值的 collection 視圖,按升序排序

entrySet

Set<Map.Entry<K,V>> entrySet()
返回在此映射中包含的映射關係的 Set 視圖。該 set 的迭代器將按升序鍵順序返回這些條目。該 set 受映射支持,所以對映射的更改將反映在此 set 中,反之亦然。如果修改映射的同時正在對該 set 進行迭代(除了通過迭代器自己的 remove 操作,或者通過在迭代器返回的映射項上執行 setValue 操作外),則迭代結果是不確定的。此 set 支持元素移除,通過 Iterator.removeSet.removeremoveAllretainAllclear 操作可從映射中移除相應的映射關係。它不支持 addaddAll 操作。

指定者:
介面 Map<K,V> 中的 entrySet
返回:
此映射所包含的映射關係的 set 視圖,按升序鍵排序

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only