- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- 型パラメータ:
K
- このマップで保持されるキーの型V
- マップされる値の型
- すべての実装されたインタフェース:
Map<K,V>
- 直系の既知のサブクラス:
ConcurrentHashMap
,ConcurrentSkipListMap
,EnumMap
,HashMap
,IdentityHashMap
,TreeMap
,WeakHashMap
public abstract class AbstractMap<K,V> extends Object implements Map<K,V>
このクラスは、Map
インタフェースのスケルトン実装を提供し、このインタフェースを実装するのに必要な作業量を最小限に抑えます。変更不可能なマップを実装するには、このクラスを拡張して、マップのマッピングのセット・ビューを返す
entrySet
メソッドを実装する必要があります。 通常、返されたセットはAbstractSet
の上に実装されます。 このセットではadd
メソッドとremove
メソッドをサポートすべきではありません。また、セットのイテレータではremove
メソッドをサポートすべきではありません。変更可能なマップを実装するには、上記に加えて、このクラスの
put
メソッドをオーバーライドします(オーバーライドしなかった場合は、UnsupportedOperationException
がスローされます)。また、上記に加えて、entrySet().iterator()
で返されるイテレータにremove
メソッドを実装する必要があります。Map
インタフェースの仕様で推奨されているように、通常は、引数なしのvoidコンストラクタ、および引数にマップをとるコンストラクタを提供してください。実装の詳細については、このクラスの抽象メソッド以外の各メソッドのドキュメントを参照してください。 より効率的な実装ができるマップの場合は、これらのメソッドをオーバーライドしてもかまいません。
このクラスは、Java Collections Frameworkのメンバーです。
- 導入されたバージョン:
- 1.2
- 関連項目:
Map
,Collection
-
-
ネストされたクラスのサマリー
ネストされたクラス 修飾子と型 クラス 説明 static class
AbstractMap.SimpleEntry<K,V>
キーと値を保持するエントリ。static class
AbstractMap.SimpleImmutableEntry<K,V>
不変のキーと値を保持するエントリ。
-
コンストラクタのサマリー
コンストラクタ 修飾子 コンストラクタ 説明 protected
AbstractMap()
唯一のコンストラクタです。
-
メソッドのサマリー
修飾子と型 メソッド 説明 void
clear()
マップからマッピングをすべて削除します(オプションの操作)。protected Object
clone()
このAbstractMap
インスタンスのシャロー・コピーを返します。キーと値は、それ自体は複製されません。boolean
containsKey(Object key)
指定されたキーのマッピングがこのマップに含まれている場合にtrue
を返します。boolean
containsValue(Object value)
このマップが1つまたは複数のキーと指定された値をマッピングしている場合にtrue
を返します。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()
このマップ内のキー値マッピングの数を返します。String
toString()
このマップの文字列表現を返します。Collection<V>
values()
このマップに含まれる値のCollection
ビューを返します。-
インタフェース java.util.Mapで宣言されたメソッド
compute, computeIfAbsent, computeIfPresent, entrySet, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
メソッドの詳細
-
size
public int size()
このマップ内のキー値マッピングの数を返します。 マップ内にInteger.MAX_VALUE
より多くの要素がある場合は、Integer.MAX_VALUE
を返します。
-
isEmpty
public boolean isEmpty()
このマップがキーと値のマッピングを保持しない場合にtrue
を返します。
-
containsValue
public boolean containsValue(Object value)
このマップが1つまたは複数のキーと指定された値をマッピングしている場合にtrue
を返します。 より正式には、このマップがObjects.equals(value, v)
のような値v
への少なくとも1つのマッピングを含む場合に限り、true
を返します。Map
インタフェースのほとんどの実装で、このオペレーションにかかる時間はマップのサイズに正比例します。- 定義:
- インタフェース
Map<K,V>
内のcontainsValue
- 実装要件:
- この実装は
entrySet()
の内容を次々調べ、指定された値を持つエントリを検索します。 そのようなエントリが見つかった場合は、true
を返します。 目的のエントリが見つからずに反復が終了した場合は、false
を返します。 この実装では、マップのサイズに正比例した時間が必要なことに注意してください。 - パラメータ:
value
- このマップにあるかどうかが判定される値- 戻り値:
- このマップが1つまたは複数のキーを指定された値にマッピングしている場合は
true
- 例外:
ClassCastException
- 値がマップに適さない型の場合(オプション)NullPointerException
- 指定された値がnullであり、このマップがnull値を許可しない場合(オプション)
-
containsKey
public boolean containsKey(Object key)
指定されたキーのマッピングがこのマップに含まれている場合にtrue
を返します。 より正式には、このマップがObjects.equals(key, k)
のようなキーk
のマッピングを含む場合に限り、true
を返します。 このようなマッピングは1つのみ存在できます。- 定義:
- インタフェース
Map<K,V>
内のcontainsKey
- 実装要件:
- この実装は
entrySet()
の内容を次々調べ、指定されたキーを持つエントリを検索します。 そのようなエントリが見つかった場合は、true
を返します。 目的のエントリが見つからずに反復が終了した場合は、false
を返します。 この実装では、マップのサイズに正比例した時間が必要なことに注意してください。多くの実装は、このメソッドをオーバーライドします。 - パラメータ:
key
- このマップ内にあるかどうかが判定されるキー- 戻り値:
- 指定されたキーのマッピングがこのマップに含まれている場合は
true
- 例外:
ClassCastException
- このキーがこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)
-
get
public V get(Object key)
指定されたキーがマップされている値を返します。そのキーのマッピングがこのマップに含まれていない場合はnull
を返します。より正式には、このマップにキー
k
からObjects.equals(key, k)
のような値v
へのマッピングが含まれている場合、このメソッドはv
を返します; それ以外の場合は、null
を返します。 このようなマッピングは1つのみ存在できます。このマップがnull値を許可する場合、戻り値の
null
は、マップがキーのマッピングを保持していないことを示すとはかぎりません。つまり、マップが明示的にキーをnull
にマップすることもあります。containsKey
操作を使うと、これら2つのケースを見分けることができます。- 定義:
- インタフェース
Map<K,V>
内のget
- 実装要件:
- この実装は
entrySet()
の内容を次々調べ、指定されたキーを持つエントリを検索します。 そのようなエントリが見つかった場合は、エントリの値を返します。 目的のエントリが見つからずに反復が終了した場合は、null
を返します。 この実装では、マップのサイズに正比例した時間が必要なことに注意してください。多くの実装は、このメソッドをオーバーライドします。 - パラメータ:
key
- 関連付けられた値が返される鍵- 戻り値:
- 指定されたキーがマップされている値。そのキーのマッピングがこのマップに含まれていない場合は
null
- 例外:
ClassCastException
- このキーがこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)
-
put
public V put(K key, V value)
指定された値と指定されたキーをこのマップで関連付けます(オプションの操作)。 マップにすでにこのキーに対するマッピングがある場合、古い値は指定された値に置き換えられます。m.containsKey(k)
がtrue
を返す場合に限り、マップm
はキーk
のマッピングを含むと言えます。- 定義:
- インタフェース
Map<K,V>
内のput
- 実装要件:
- この実装は、常に
UnsupportedOperationException
をスローします。 - パラメータ:
key
- 指定された値が関連付けられるキーvalue
- 指定された鍵に関連付けられる値- 戻り値:
key
に以前に関連付けられていた値。key
のマッピングが存在しなかった場合はnull
。 (実装がnull
値をサポートしている場合、戻り値null
は、以前にマップがnull
とkey
を関連付けていたことを示す場合もある。)- 例外:
UnsupportedOperationException
-put
オペレーションがこのマップでサポートされない場合ClassCastException
- 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合NullPointerException
- 指定されたキーまたは値がnullであり、このマップがnullのキーまたは値を許可しない場合IllegalArgumentException
- 指定されたキーまたは値のあるプロパティが原因で、このマップにそれらを格納できない場合
-
remove
public V remove(Object key)
このマップからキーのマッピング(ある場合)を削除します(オプションの操作)。 より正式には、このマップに、k
からObjects.equals(key, k)
のような値v
へのマッピングが含まれている場合、そのマッピングは削除されます。 マップはこのようなマッピングを1つだけ含めることができます。このマップが以前にこのキーを関連付けていた値を返します。キーに対するマッピングがマップになかった場合は
null
を返します。このマップがnull値を許可する場合、戻り値の
null
は、マップがキーのマッピングを保持していなかったことを示すとはかぎりません。つまり、マップが明示的にキーをnull
にマップしていた可能性もあります。呼出しが戻ると、マップは指定されたキーのマッピングを含まなくなります。
- 定義:
- インタフェース
Map<K,V>
内のremove
- 実装要件:
- この実装は
entrySet()
の内容を次々調べ、指定されたキーを持つエントリを検索します。 そのようなエントリが見つかった場合は、エントリの値を実装のgetValue
オペレーションで取得し、エントリをコレクションとその基になるマップから削除します。削除はイテレータのremove
オペレーションを使い、保存された値が返されます。 目的のエントリが見つからずに反復が終了した場合は、null
を返します。 この実装では、マップのサイズに正比例した時間が必要なことに注意してください。多くの実装は、このメソッドをオーバーライドします。entrySet
イテレータがremove
メソッドをサポートしないで、このマップが指定されたキーのマッピングを保持する場合は、この実装はUnsupportedOperationException
をスローします。 - パラメータ:
key
- マッピングがマップから削除されるキー- 戻り値:
key
に以前に関連付けられていた値。key
のマッピングが存在しなかった場合はnull
。- 例外:
UnsupportedOperationException
-remove
オペレーションがこのマップでサポートされない場合ClassCastException
- このキーがこのマップに適さない型の場合(オプション)NullPointerException
- 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)
-
putAll
public void putAll(Map<? extends K,? extends V> m)
指定されたマップのすべてのマッピングをこのマップにコピーします(オプションの操作)。 この呼出しの効果は、指定されたマップ内のキーk
から値v
へのマッピングごとに、このマップに対してput(k, v)
を1回呼び出した場合と同じです。 オペレーションの進行中に、指定されたマップが変更された場合の、このオペレーションの動作は定義されていません。- 定義:
- インタフェース
Map<K,V>
内のputAll
- 実装要件:
- この実装は、指定されたマップの
entrySet()
コレクションの内容を次々調べ、反復によって各エントリが返されるごとに、このマップのput
オペレーションを1回呼び出します。このマップが
put
オペレーションをサポートせず、指定マップが空でない場合、この実装はUnsupportedOperationException
をスローします。 - パラメータ:
m
- このマップに格納されるマッピング- 例外:
UnsupportedOperationException
-putAll
オペレーションがこのマップでサポートされない場合ClassCastException
- 指定されたマップ内のキーまたは値のクラスが原因で、このマップにそれらを格納できない場合NullPointerException
- 指定されたマップがnullである場合、またはこのマップがnullのキーまたは値を許可せず、指定されたマップにnullのキーまたは値が含まれている場合IllegalArgumentException
- 指定されたマップ内のキーまたは値のあるプロパティが原因で、このマップにそれらを格納できない場合
-
clear
public void clear()
マップからマッピングをすべて削除します(オプションの操作)。 この呼出しが戻ると、マップは空になります。- 定義:
- インタフェース
Map<K,V>
内のclear
- 実装要件:
- この実装は、
entrySet().clear()
を呼び出します。entrySet
がclear
オペレーションをサポートしない場合、この実装はUnsupportedOperationException
をスローします。 - 例外:
UnsupportedOperationException
-clear
オペレーションがこのマップでサポートされない場合
-
keySet
public Set<K> keySet()
このマップに含まれるキーのSet
ビューを返します。 セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。 セットの反復処理中にマップが変更された場合、反復処理の結果は定義されていません(イテレータ自身のremove
オペレーションを除く)。 セットは要素の削除をサポートします。Iterator.remove
、Set.remove
、removeAll
、retainAll
、およびclear
オペレーションで対応するマッピングをマップから削除します。add
またはaddAll
操作はサポートされていません。- 定義:
- インタフェース
Map<K,V>
内のkeySet
- 実装要件:
- この実装は、
AbstractSet
をサブクラス化するセットを返します。 このサブクラスのiteratorメソッドは、このマップのentrySet()
イテレータのラッパー・オブジェクトを返します。size
メソッドはこのマップのsize
メソッドに委譲し、contains
メソッドは、このマップのcontainsKey
メソッドに委譲します。Setは、このメソッドが最初に呼び出されたときに作成され、それに続くすべての呼出しに応じて返されます。 同期は一切行われません。このため、わずかながら、このメソッドへの複数の呼出しに対して、同じSetが返されない可能性があります。
- 戻り値:
- マップに含まれているキーのセット・ビュー
-
values
public Collection<V> values()
このマップに含まれる値のCollection
ビューを返します。 コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。 コレクションの反復処理中にマップが変更された場合、反復処理の結果は定義されません(イテレータ自身のremove
オペレーションを除く)。 コレクションは要素の削除をサポートしており、対応するマッピングをマップから削除できます。削除は、Iterator.remove
、Collection.remove
、removeAll
、retainAll
、およびclear
オペレーションを通して行います。add
またはaddAll
操作はサポートされていません。- 定義:
- インタフェース
Map<K,V>
内のvalues
- 実装要件:
- この実装は、
AbstractCollection
をサブクラス化するコレクションを返します。 このサブクラスのiteratorメソッドは、このマップのentrySet()
イテレータのラッパー・オブジェクトを返します。size
メソッドはこのマップのsize
メソッドに委譲し、contains
メソッドは、このマップのcontainsValue
メソッドに委譲します。コレクションは、このメソッドが最初に呼び出されたときに作成され、それに続くすべての呼出しに応じて返されます。 同期は一切行われません。このため、わずかながら、このメソッドへの複数の呼出しに対して、同じコレクションが返されない可能性があります。
- 戻り値:
- マップ内に含まれている値のコレクション・ビュー
-
equals
public boolean equals(Object o)
指定されたオブジェクトがこのマップと等しいかどうかを比較します。 指定されたオブジェクトもマップであり、2つのマップが同じマッピングを表す場合にtrue
を返します。 つまり、m1.entrySet().equals(m2.entrySet())
である場合、2つのマップm1
とm2
は同じマッピングを表します。 これにより、Map
インタフェースの実装が異なる場合でも、equals
メソッドが正しく動作することが保証されます。- 定義:
- インタフェース
Map<K,V>
内のequals
- オーバーライド:
equals
、クラス:Object
- 実装要件:
- この実装は、指定されたオブジェクトがこのマップ自身であるかどうかを最初に調べます。このマップである場合、実装は
true
を返します。 次に、指定されたオブジェクトについて、このマップと同じサイズのマップであるかどうかを調べます。同じサイズのマップでない場合はfalse
を返します。 同じサイズのマップである場合は、このマップのentrySet
コレクションの内容を次々調べて、指定されたマップに、このマップが格納している各マッピングが含まれているかどうかを調べます。 指定されたマップにそのようなマッピングがない場合は、false
が返されます。 反復が完了した場合にtrue
が返されます。 - パラメータ:
o
- このマップと等しいかどうかが比較されるオブジェクト- 戻り値:
- 指定されたオブジェクトがこのマップと等しい場合は
true
- 関連項目:
Object.hashCode()
、HashMap
-
hashCode
public int hashCode()
マップのハッシュ・コード値を返します。 マップのハッシュ・コードは、そのマップのentrySet()
ビュー内の各エントリのハッシュ・コードの合計になるように定義されます。 これにより、Object.hashCode()
の一般規約によって要求されるように、任意の2つのマップm1
とm2
でm1.equals(m2)
であれば、m1.hashCode()==m2.hashCode()
となることが保証されます。- 定義:
- インタフェース
Map<K,V>
内のhashCode
- オーバーライド:
hashCode
、クラス:Object
- 実装要件:
- この実装は、セットの各要素(エントリ)の
hashCode()
を呼び出して、entrySet()
の内容を次々調べ、結果を加算していきます。 - 戻り値:
- マップのハッシュ・コード値
- 関連項目:
Map.Entry.hashCode()
,Object.equals(Object)
,Set.equals(Object)
-
toString
public String toString()
このマップの文字列表現を返します。 文字列表現は、キーと値のマッピングをマップのentrySet
ビューのイテレータが返した順に中カッコ("{}"
)で囲んで示すリストです。 隣接するマッピングは、文字", "
(カンマと空白文字)によって区切られます。 各キーと値のマッピングは、キーのあとに等号("="
)が続き、その次にキーと関連付けられる値が続くという形で描画されます。 キーと値は、String.valueOf(Object)
により文字列に変換されます。
-
clone
protected Object clone() throws CloneNotSupportedException
このAbstractMap
インスタンスのシャロー・コピーを返します。キーと値は、それ自体は複製されません。- オーバーライド:
clone
、クラス:Object
- 戻り値:
- このマップのシャロー・コピー
- 例外:
CloneNotSupportedException
- オブジェクトのクラスがCloneable
インタフェースをサポートしていない場合。clone
メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがある。- 関連項目:
Cloneable
-
-