JavaTM 2 Platform
Standard Ed. 6

java.util
類別 EnumMap<K extends Enum<K>,V>

java.lang.Object
  繼承者 java.util.AbstractMap<K,V>
      繼承者 java.util.EnumMap<K,V>
所有已實作的介面:
Serializable, Cloneable, Map<K,V>

public class EnumMap<K extends Enum<K>,V>
extends AbstractMap<K,V>
implements Serializable, Cloneable

與列舉型別鍵一起使用的專用 Map 實作。列舉映射中所有鍵都必須來自單個列舉型別,該列舉型別在創建映射時顯式或隱式地指定。列舉映射在內部表示為陣列。此表示形式非常緊湊且高效。

列舉映射根據其鍵的自然順序 來維護(該順序是宣告列舉常數的順序)。在 collection 視圖(keySet()entrySet()values())所返回的迭代器中反映了這一點。

由 collection 視圖返回的迭代器是弱一致 的:它們不會拋出 ConcurrentModificationException,也不一定顯示在迭代進行時發生的任何映射修改的效果。

不允許使用 null 鍵。試圖插入 null 鍵將拋出 NullPointerException。但是,試圖測試是否出現 null 鍵或移除 null 鍵將不會拋出異常。允許使用 null 值。

像大多數 collection 一樣,EnumMap 是不同步的。如果多個執行緒同時存取一個列舉映射,並且至少有一個執行緒修改該映射,則此列舉映射在外部應該是同步的。這一般通過對自然封裝該列舉映射的某個物件進行同步來完成。如果不存在這樣的物件,則應該使用 Collections.synchronizedMap(java.util.Map) 方法來「包裹」該列舉。最好在創建時完成這一操作,以防止意外的非同步存取:

     Map<EnumKey, V> m
         = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));
 

實作注意事項:所有基本操作都在固定時間內執行。雖然並不保證,但它們很可能比其 HashMap 副本更快。

此類別是 Java Collections Framework 的成員。

從以下版本開始:
1.5
另請參見:
EnumSet, 序列化表格

巢狀類別摘要
 
從類別 java.util.AbstractMap 繼承的巢狀類別/介面
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
 
從介面 java.util.Map 繼承的巢狀類別/介面
Map.Entry<K,V>
 
建構子摘要
EnumMap(Class<K> keyType)
          創建一個具有指定鍵型別的空列舉映射。
EnumMap(EnumMap<K,? extends V> m)
          創建一個其鍵型別與指定列舉映射相同的列舉映射,最初包含相同的映射關係(如果有的話)。
EnumMap(Map<K,? extends V> m)
          創建一個列舉映射,從指定映射對其初始化。
 
方法摘要
 void clear()
          從此映射中移除所有映射關係。
 EnumMap<K,V> clone()
          返回此列舉映射的淺表副本。
 boolean containsKey(Object key)
          如果此映射包含指定鍵的映射關係,則返回 true
 boolean containsValue(Object value)
          如果此映射將一個或多個鍵映射到指定值,則返回 true
 Set<Map.Entry<K,V>> entrySet()
          返回此映射中所包含映射關係的 Set 視圖。
 boolean equals(Object o)
          比較指定對象與此映射的相等性。
 V get(Object key)
          返回指定鍵所映射的值,如果此映射不包含此鍵的映射關係,則返回 null
 Set<K> keySet()
          返回此映射中所包含鍵的 Set 視圖。
 V put(K key, V value)
          將指定值與此映射中指定鍵關聯。
 void putAll(Map<? extends K,? extends V> m)
          將指定映射中所有映射關係複製到此映射中。
 V remove(Object key)
          從此映射中移除該鍵的映射關係(如果存在)。
 int size()
          返回此映射中的鍵-值映射關係數。
 Collection<V> values()
          返回此映射中所包含值的 Collection 視圖。
 
從類別 java.util.AbstractMap 繼承的方法
hashCode, isEmpty, toString
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

EnumMap

public EnumMap(Class<K> keyType)
創建一個具有指定鍵型別的空列舉映射。

參數:
keyType - 此列舉映射的鍵型別的 class 物件
拋出:
NullPointerException - 如果 keyType 為空

EnumMap

public EnumMap(EnumMap<K,? extends V> m)
創建一個其鍵型別與指定列舉映射相同的列舉映射,最初包含相同的映射關係(如果有的話)。

參數:
m - 用於初始化此列舉映射的列舉映射
拋出:
NullPointerException - 如果 m 為空

EnumMap

public EnumMap(Map<K,? extends V> m)
創建一個列舉映射,從指定映射對其初始化。如果指定的映射是一個 EnumMap 實例,則此建構子的功能與 EnumMap(EnumMap) 相同。否則,指定的映射必須至少包含一個映射關係(以確定新列舉映射的鍵型別)。

參數:
m - 用於初始化此列舉映射的映射
拋出:
IllegalArgumentException - 如果 m 不是一個 EnumMap 實例,並且不包含映射關係
NullPointerException - 如果 m 為空
方法詳細資訊

size

public int size()
返回此映射中的鍵-值映射關係數。

指定者:
介面 Map<K extends Enum<K>,V> 中的 size
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 size
返回:
此映射中的鍵-值映射關係數。

containsValue

public boolean containsValue(Object value)
如果此映射將一個或多個鍵映射到指定值,則返回 true

指定者:
介面 Map<K extends Enum<K>,V> 中的 containsValue
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 containsValue
參數:
value - 將要在此映射中測試其是否存在的值
返回:
如果此映射將一個或多個鍵映射到此值,則返回 true

containsKey

public boolean containsKey(Object key)
如果此映射包含指定鍵的映射關係,則返回 true

指定者:
介面 Map<K extends Enum<K>,V> 中的 containsKey
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 containsKey
參數:
key - 將要在此映射中測試其是否存在的鍵
返回:
如果此映射包含指定鍵的映射關係,則返回 true

get

public V get(Object key)
返回指定鍵所映射的值,如果此映射不包含此鍵的映射關係,則返回 null

更確切地講,如果此映射包含滿足 (key == k) 的從鍵 k 到值 v 的映射關係,則此方法返回 v;否則,返回 null。(最多只能有一個這樣的映射關係。)

返回 null 值並不 一定 表示此映射不包含此鍵的映射關係;也可能是映射顯式地將此鍵映射到了 nullcontainsKey 操作可以用於區分這兩種情況。

指定者:
介面 Map<K extends Enum<K>,V> 中的 get
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 get
參數:
key - 要返回其關聯值的鍵
返回:
指定鍵所映射的值;如果此映射不包含該鍵的映射關係,則返回 null

put

public V put(K key,
             V value)
將指定值與此映射中指定鍵關聯。如果該映射以前包含此鍵的映射關係,則將原值替換。

指定者:
介面 Map<K extends Enum<K>,V> 中的 put
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 put
參數:
key - 指定值與其關聯的鍵
value - 與指定鍵關聯的值
返回:
與指定鍵關聯的舊值,如果不存在該鍵的映射關係,則返回 null。(返回 null 還可能表明以前該映射將 null 與指定鍵關聯。)
拋出:
NullPointerException - 如果指定鍵為 null

remove

public V remove(Object key)
從此映射中移除該鍵的映射關係(如果存在)。

指定者:
介面 Map<K extends Enum<K>,V> 中的 remove
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 remove
參數:
key - 其映射關係要從映射中移除的鍵
返回:
以前與指定鍵關聯的值,如果不存在關聯值,則返回 null。(返回 null 還可能指示以前該映射將 null 與指定鍵關聯。)

putAll

public void putAll(Map<? extends K,? extends V> m)
將指定映射中所有映射關係複製到此映射中。這些映射關係將替換此映射目前針對指定映射的所有鍵的所有映射關係。

指定者:
介面 Map<K extends Enum<K>,V> 中的 putAll
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 putAll
參數:
m - 存儲在此映射中的映射關係
拋出:
NullPointerException - 如果指定映射為 null,或指定映射中一個或多個鍵為 null

clear

public void clear()
從此映射中移除所有映射關係。

指定者:
介面 Map<K extends Enum<K>,V> 中的 clear
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 clear

keySet

public Set<K> keySet()
返回此映射中所包含鍵的 Set 視圖。 返回的 set 遵守 Map.keySet() 中描述的常規協定。該 set 的迭代器將按其自然順序返回鍵(此順序是宣告列舉常數的順序)。

指定者:
介面 Map<K extends Enum<K>,V> 中的 keySet
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 keySet
返回:
此列舉映射所包含鍵的 set 視圖

values

public Collection<V> values()
返回此映射中所包含值的 Collection 視圖。返回的 collection 遵守 Map.keySet() 中描述的常規協定。該 collection 的迭代器返回值是按照它們相應的鍵在映射中出現的順序返回的,即按照它們的自然順序(此順序是宣告列舉常數的順序)。

指定者:
介面 Map<K extends Enum<K>,V> 中的 values
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 values
返回:
此映射中包含的值的 collection 視圖

entrySet

public Set<Map.Entry<K,V>> entrySet()
返回此映射中所包含映射關係的 Set 視圖。返回的 set 遵守 Map.keySet() 中描述的常規協定。該 set 的迭代器返回映射關係是按照它們的鍵在映射中出現的順序返回的,即按照它們的自然順序(此順序是宣告列舉常數的順序)。

指定者:
介面 Map<K extends Enum<K>,V> 中的 entrySet
指定者:
類別 AbstractMap<K extends Enum<K>,V> 中的 entrySet
返回:
此列舉映射中包含的映射關係的 set 視圖

equals

public boolean equals(Object o)
比較指定對象與此映射的相等性。如果給定對象也是一個映射,並且按照 Map.equals(Object) 協定,兩個映射表示的映射關係相同,則返回 true

指定者:
介面 Map<K extends Enum<K>,V> 中的 equals
覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 equals
參數:
o - 要與此映射比較的物件
返回:
如果指定物件等於此映射,則返回 true
另請參見:
Object.hashCode(), Hashtable

clone

public EnumMap<K,V> clone()
返回此列舉映射的淺表副本。(這些值本身沒有複製。)

覆寫:
類別 AbstractMap<K extends Enum<K>,V> 中的 clone
返回:
此列舉映射的淺表副本
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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