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のメンバーです。
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>
コンストラクタ | 説明 |
---|---|
EnumMap(Class<K> keyType) |
指定されたキーの型を使用して空のenumマップを作成します。
|
EnumMap(EnumMap<K,? extends V> m) |
指定されたenumマップと同じキーの型を使用して、enumマップを作成します。最初は、同じマッピングを含むenumマップを作成します(同じマッピングが存在する場合)。
|
EnumMap(Map<K,? extends V> m) |
指定されたマップから初期化されたenumマップを作成します。
|
修飾子と型 | メソッド | 説明 |
---|---|---|
void |
clear() |
すべてのマッピングをマップから削除します。
|
EnumMap<K,V> |
clone() |
このenumマップのシャロー・コピーを返します。
|
boolean |
containsKey(Object key) |
指定のキーのマッピングがこのマップに含まれている場合にtrueを返します。
|
boolean |
containsValue(Object value) |
このマップが1つまたは複数のキーを指定された値にマッピングしている場合にtrueを返します。
|
Set<Map.Entry<K,V>> |
entrySet() |
このマップに含まれるマッピングの
Set ビューを返します。 |
boolean |
equals(Object o) |
指定されたオブジェクトがこのマップと等しいかどうかを比較します。
|
V |
get(Object key) |
指定されたキーがマップされている値を返します。このマップにそのキーのマッピングが含まれていない場合は
null を返します。 |
int |
hashCode() |
マップのハッシュ・コード値を返します。
|
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 ビューを返します。 |
isEmpty, toString
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
public EnumMap(Class<K> keyType)
keyType
- このenumマップ用のキー型のクラス・オブジェクトNullPointerException
- keyTypeがnullである場合public EnumMap(EnumMap<K,? extends V> m)
m
- このenumマップの初期化元のenumマップNullPointerException
- mがnullの場合public EnumMap(Map<K,? extends V> m)
EnumMap(EnumMap)
と同じ動作をします。 それ以外の場合は、指定されたマップがマッピングを1つ以上含んでいる必要があります(新規enumマップのキーの型を判定するため)。 m
- このenumマップの初期化元のマップIllegalArgumentException
- mがEnumMapインスタンスではなく、マッピングを含まない場合NullPointerException
- mがnullの場合public int size()
public boolean containsValue(Object value)
containsValue
、インタフェースMap<K extends Enum<K>,V>
containsValue
、クラスAbstractMap<K extends Enum<K>,V>
value
- マップにあるかどうかを判定される値public boolean containsKey(Object key)
containsKey
、インタフェースMap<K extends Enum<K>,V>
containsKey
、クラスAbstractMap<K extends Enum<K>,V>
key
- このマップ内にあるかどうかが判定されるキーpublic V get(Object key)
null
を返します。
つまり、このメソッドは、(key == k)
となるキーk
から値v
へのマッピングがこのマップに含まれている場合はv
を返し、それ以外の場合はnull
を返します。 (このようなマッピングは1つのみ存在できます。)
戻り値null
は、マップがキーのマッピングを保持していないことを示すとはかぎりません。つまり、マップが明示的にキーをnull
にマップすることもあります。 containsKey
オペレーションを使うと、これらの2つの場合を区別できます。
public V put(K key, V value)
public void putAll(Map<? extends K,? extends V> m)
public void clear()
public Set<K> keySet()
Set
ビューを返します。 返されるセットは、Map.keySet()
に概説されている汎用規約に従います。 セットのイテレータは、自然順序(enum定数の宣言された順序)に従ってキーを返します。 public Collection<V> values()
Collection
ビューを返します。 返されるコレクションは、Map.values()
に概説されている汎用規約に従います。 コレクションのイテレータは、対応するキーがマップ内に表示される自然順序(enum定数の宣言された順序)に従って値を返します。 public Set<Map.Entry<K,V>> entrySet()
Set
ビューを返します。 返されるセットは、Map.keySet()
に概説されている汎用規約に従います。 セットのイテレータは、キーがマップ内に表示される自然順序(enum定数の宣言された順序)に従ってマッピングを返します。 public boolean equals(Object o)
Map.equals(Object)
規約で指定されたものと同じマッピングを表す場合、trueを返します。 public int hashCode()
hashCode
、インタフェースMap<K extends Enum<K>,V>
hashCode
、クラスAbstractMap<K extends Enum<K>,V>
Map.Entry.hashCode()
, Object.equals(Object)
, Set.equals(Object)
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。