モジュール java.base
パッケージ java.util

クラスEnumMap<K extends Enum<K>,V>

java.lang.Object
java.util.AbstractMap<K,V>
java.util.EnumMap<K,V>
型パラメータ:
K - このマップによって保持されるキーの列挙タイプ
V - マップされる値の型
すべての実装されたインタフェース:
Serializable, Cloneable, Map<K,V>

public class EnumMap<K extends Enum<K>,V> extends AbstractMap<K,V> implements Serializable, Cloneable
列挙型のキーと一緒に使用するための特殊なMap実装です。 enumマップ内のキーはすべて、マップの作成時に、指定された単一のenum型から明示的または暗黙的に生成される必要があります。 enumマップは、内部では配列として表現されます。 この表現は、非常に簡潔かつ効率的です。

enumマップは、キーの自然順序 (enum定数の宣言される順序)で管理されます。 これは、コレクション・ビュー(keySet()entrySet()、およびvalues())により返されるイテレータに反映されます。

コレクション・ビューにより返されるイテレータは、弱一貫性を保持します。これらがConcurrentModificationExceptionをスローすることはありません。また、反復の進行中に実行されるマップへの変更の影響を表示することも、非表示にすることも可能です。

nullキーは許可されません。 nullキーを挿入しようとすると、NullPointerExceptionがスローされます。 ただし、nullキーの存在をテストしたり、削除を試みる場合は正常に機能します。 null値は指定可能です。

ほとんどのコレクション実装と同様に、EnumMapは同期されません。 複数のスレッドが並行してenumマップにアクセスし、それらのスレッドの少なくとも1つがマップを変更する場合には、外部で同期をとる必要があります。 通常、これは、enumマップを自然にカプセル化するいくつかのオブジェクトで同期をとることによって達成されます。 そのようなオブジェクトが存在しない場合は、Collections.synchronizedMap(java.util.Map<K, V>)メソッドを使用してマップを「ラップ」する必要があります。 これは、偶発的な非同期アクセスを防ぐために、作成時に行うのが最適です。

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

実装にあたってのノート: 基本のオペレーションはすべて一定時間に実行されます。 これらは通常、HashMapの対応するオペレーションよりも高速に動作します(ただし保証外)。

このクラスは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.5
関連項目: