K
- このマップで保持されるキーの型V
- マップされる値の型public interface Map<K,V>
このインタフェースは、インタフェースというよりむしろ完全に抽象クラスであった Dictionary クラスに代わるものです。
Mapインタフェースが提供する 3 つのコレクションビューにより、マップの内容を、キーのセット、値のコレクション、あるいはキーと値のマッピングのセットとして表示できるようになります。マップの順序は、マップのコレクションビューのイテレータが要素を返すときの順序として定義されます。TreeMap クラスなど一部のマップの実装では、順序について保証しますが、HashMap クラスなどの実装では順序は保証されません。
注:可変オブジェクトをマップキーとして使用する場合は細心の注意が必要です。オブジェクトがマップ内のキーであるときに、equals の比較に影響を与える方法でオブジェクトの値が変更された場合、マップの動作は保証されません。この禁止事項の特殊な例として、マップがそれ自身をキーとして持つことができないことが挙げられます。マップがそれ自身を値として持つことは許可されますが、その場合は細心の注意が必要です。そのようなマップでは equals メソッドおよび hashCode メソッドの動作は保証されません。
汎用マップの実装クラスはすべて、次の 2 つの標準的なコンストラクタを提供するようにしてください。空のマップを作成する void (引数なし) コンストラクタと、Map 型の引数を 1 つ持ち、その引数と同じキーと値のマッピングで新しいマップを作成するコンストラクタです。その結果、ユーザーは、後者のコンストラクタを使用して任意のマップをコピーすることにより、必要なクラスと等価なマップを作成できます。これは推奨される方法ではありませんが (インタフェースはコンストラクタを持つことができないため)、JDK での汎用マップの実装はすべてこれに従っています。
このインタフェースに含まれている「破壊的な」メソッド (処理対象のマップを変更するメソッド) は、このマップがそのオペレーションをサポートしていない場合に UnsupportedOperationException をスローするように指定されています。このとき、呼び出しがマップに影響を及ぼさない場合、これらのメソッドは UnsupportedOperationException をスローすることがありますが、必須ではありません。たとえば、マッピングを「重ね合わせる」マップが空の場合に、変更不可能なマップで putAll(Map)
メソッドを呼び出すと、例外をスローすることがありますが、必須ではありません。
マップの実装には、格納できるキーと値に制限があるものもあります。たとえば、null キーと null 値を禁止する実装や、null キーの型に制限がある実装もあります。不適当なキーまたは値を挿入しようとすると、通常 NullPointerException または ClassCastException のような非チェック例外がスローされます。不適当なキーや値があるかどうかを照会しようとすると、例外がスローされる場合や、ただ false を返す場合もあります。前者の動作を実行する実装もあれば、後者の動作を実行する実装もあります。もう少し一般的に言うと、不適当なキーまたは値を処理しようとしてマップへの挿入が完了しない場合、例外がスローされるか成功するかは実装の任意です。このインタフェースの仕様では、そうした例外は「任意」と記載されています。
このインタフェースは、Java Collections Framework のメンバーです。
Collections Framework インタフェース内の多数のメソッドは、equals
メソッドとの関連で定義されます。たとえば、containsKey(Object key)
メソッドの仕様は、「このマップに (key==null ? k==null : key.equals(k)) を満たすキー k が含まれる場合にのみ、true を返す」というものです。この仕様は、「null 以外の引数 key を使用して Map.containsKey を呼び出すと、キー k で key.equals(k) が呼び出される」と理解すべきではありません。実装は、最初に 2 つのキーのハッシュコードを比較するなど、equals 呼び出しを回避するための最適化を自由に実装できます。(Object.hashCode()
仕様では、等価ではないハッシュコードを保持する 2 つのオブジェクトは等価ではないことが保証されます。)もう少し一般的に言うと、さまざまな Collections Framework インタフェースの実装で、実装者が適切と判断するなら、基本となる Object
メソッドの指定された動作を自由に利用できます。
修飾子と型 | メソッドと説明 |
---|---|
void |
clear()
マップからマッピングをすべて削除します (オプションの操作)。
|
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()
マップのハッシュコード値を返します。
|
boolean |
isEmpty()
このマップがキーと値のマッピングを保持しない場合に true を返します。
|
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 ビューを返します。 |
int size()
boolean isEmpty()
boolean containsKey(Object key)
key
- このマップ内にあるかどうかが判定されるキーClassCastException
- このキーがこのマップに適さない型の場合 (任意)NullPointerException
- 指定されたキーが null であり、このマップが null キーを許可しない場合 (任意)boolean containsValue(Object value)
value
- このマップにあるかどうかが判定される値ClassCastException
- 値がマップに適さない型の場合 (任意)NullPointerException
- 指定された値が null であり、このマップが null 値を許可しない場合 (任意)V get(Object key)
null
を返します。
つまり、このメソッドは、(key==null ? k==null : key.equals(k))
となるキー k
から値 v
へのマッピングがこのマップに含まれている場合は v
を返し、それ以外の場合は null
を返します。(このようなマッピングは 1 つのみ存在できます。)
このマップが null 値を許可する場合、戻り値の null
は、マップがキーのマッピングを保持していないことを示すとはかぎりません。つまり、マップが明示的にキーを null
にマップすることもあります。containsKey
オペレーションを使うと、これらの 2 つの場合を区別できます。
key
- 関連付けられた値が返されるキーnull
ClassCastException
- このキーがこのマップに適さない型の場合 (任意)NullPointerException
- 指定されたキーが null であり、このマップが null キーを許可しない場合 (任意)V put(K key, V value)
m.containsKey(k)
が true を返す場合にかぎり、マップ m はキー k のマッピングを含むと言えます。key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値UnsupportedOperationException
- put オペレーションがこのマップでサポートされない場合ClassCastException
- 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合NullPointerException
- 指定されたキーまたは値が null であり、このマップが null のキーまたは値を許可しない場合IllegalArgumentException
- 指定されたキーまたは値のあるプロパティーが原因で、このマップにそれらを格納できない場合V remove(Object key)
(key==null ? k==null : key.equals(k))
となるキー k から値 v へのマッピングがこのマップに含まれる場合、このマッピングは削除されます。マップはこのようなマッピングを 1 つだけ含めることができます。
このマップが以前にこのキーを関連付けていた値を返します。キーに対するマッピングがマップになかった場合は null を返します。
このマップが null 値を許可する場合、戻り値の null は、マップがキーのマッピングを保持していなかったことを示すとはかぎりません。つまり、マップが明示的にキーを null にマップしていた可能性もあります。
呼び出しが戻ると、マップは指定されたキーのマッピングを含まなくなります。
key
- マッピングがマップから削除されるキーUnsupportedOperationException
- remove オペレーションがこのマップでサポートされない場合ClassCastException
- このキーがこのマップに適さない型の場合 (任意)NullPointerException
- 指定されたキーが null であり、このマップが null キーを許可しない場合 (任意)void putAll(Map<? extends K,? extends V> m)
put(k, v)
を 1 回呼び出した場合と同じです。オペレーションの進行中に、指定されたマップが変更された場合の、このオペレーションの動作は定義されていません。m
- このマップに格納されるマッピングUnsupportedOperationException
- putAll オペレーションがこのマップでサポートされない場合ClassCastException
- 指定されたマップ内のキーまたは値のクラスが原因で、このマップにそれらを格納できない場合NullPointerException
- 指定されたマップが null である場合、またはこのマップが null のキーまたは値を許可せず、指定されたマップに null のキーまたは値が含まれている場合IllegalArgumentException
- 指定されたマップ内のキーまたは値のあるプロパティーが原因で、このマップにそれらを格納できない場合void clear()
UnsupportedOperationException
- clear オペレーションがこのマップでサポートされない場合Set<K> keySet()
Set
ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットの反復処理中にマップが変更された場合、反復処理の結果は定義されていません (イテレータ自身の remove オペレーションを除く)。セットは要素の削除をサポートします。Iterator.remove、Set.remove、removeAll、retainAll、および clear オペレーションで対応するマッピングをマップから削除します。add または addAll オペレーションはサポートしていません。Collection<V> values()
Collection
ビューを返します。コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。コレクションの反復処理中にマップが変更された場合、反復処理の結果は定義されていません (イテレータ自身の remove オペレーションを除く)。コレクションは要素の削除をサポートします。Iterator.remove、Collection.remove、removeAll、retainAll、および clear オペレーションで対応するマッピングをマップから削除します。add または addAll オペレーションはサポートしていません。Set<Map.Entry<K,V>> entrySet()
Set
ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットの反復処理中にマップが変更された場合、反復処理の結果は定義されません (イテレータ自身の remove オペレーション、またはイテレータにより返されるマップエントリに対する setValue オペレーションを除く)。セットは要素の削除をサポートします。Iterator.remove、Set.remove、removeAll、retainAll、および clear オペレーションで対応するマッピングをマップから削除します。add または addAll オペレーションはサポートしていません。boolean equals(Object o)
equals
、クラス: Object
o
- このマップと等しいかどうかが比較されるオブジェクトObject.hashCode()
, HashMap
int hashCode()
Object.hashCode()
の一般規約によって要求されるように、任意の 2 つのマップ m1 と m2 で m1.equals(m2) であれば、m1.hashCode()==m2.hashCode() となることが保証されます。hashCode
、クラス: Object
Map.Entry.hashCode()
, Object.equals(Object)
, equals(Object)
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.