JavaTM Platform
Standard Ed. 6

java.util
クラス AbstractMap<K,V>

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 コンストラクタ、および引数にマップをとるコンストラクタを提供してください。

実装の詳細については、このクラスの abstract メソッド以外の各メソッドのドキュメントを参照してください。より効率的な実装ができるマップの場合は、これらのメソッドをオーバーライドしてもかまいません。

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

導入されたバージョン:
1.2
関連項目:
Map, Collection

入れ子のクラスの概要
static class AbstractMap.SimpleEntry<K,V>
          キーと値を維持するエントリ。
static class AbstractMap.SimpleImmutableEntry<K,V>
          不変のキーと値を維持するエントリ。
 
インタフェース java.util.Map から継承された入れ子のクラス/インタフェース
Map.Entry<K,V>
 
コンストラクタの概要
protected AbstractMap()
          唯一のコンストラクタです。
 
メソッドの概要
 void clear()
          マップからマッピングをすべて削除します (任意のオペレーション)。
protected  Object clone()
          AbstractMap のインスタンスのシャローコピーを返します。
 boolean containsKey(Object key)
          マップが指定されたキーのマッピングを保持する場合に true を返します。
 boolean containsValue(Object value)
          マップが 1 つまたは複数のキーと指定された値をマッピングしている場合に true を返します。
abstract  Set<Map.Entry<K,V>> entrySet()
          このマップに含まれるマップの Set ビューを返します。
 boolean equals(Object o)
          指定されたオブジェクトがこのマップと等しいかどうかを比較します。
 V get(Object key)
          指定されたキーがマップされている値を返します。
 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.lang.Object から継承されたメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
 

コンストラクタの詳細

AbstractMap

protected AbstractMap()
唯一のコンストラクタです。サブクラスのコンストラクタによる呼び出し用で、通常は暗黙的に呼び出されます。

メソッドの詳細

size

public int size()
マップ内のキー値マッピングの数を返します。マップに Integer.MAX_VALUE より多くの要素がある場合は、Integer.MAX_VALUE を返します。

この実装は entrySet().size() を返します。

定義:
インタフェース Map<K,V> 内の size
戻り値:
マップ内のキーと値のマッピングの数

isEmpty

public boolean isEmpty()
マップがキーと値のマッピングを保持しない場合に true を返します。

この実装は size() == 0 の結果を返します。

定義:
インタフェース Map<K,V> 内の isEmpty
戻り値:
マップがキーと値のマッピングを保持しない場合は true

containsValue

public boolean containsValue(Object value)
マップが 1 つまたは複数のキーと指定された値をマッピングしている場合に true を返します。つまり、マップに、(value==null ? v==null : value.equals(v)) となる値 v へのマッピングが 1 つ以上ある場合にだけ true を返します。Map インタフェースのほとんどの実装で、このオペレーションにかかる時間はマップのサイズに正比例します。

この実装は entrySet() の内容を次々調べ、指定された値を持つエントリを検索します。そのようなエントリが見つかった場合は、true を返します。目的のエントリが見つからずに反復が終了した場合は、false を返します。この実装では、マップのサイズに正比例した時間が必要なことに注意してください。

定義:
インタフェース Map<K,V> 内の containsValue
パラメータ:
value - マップにあるかどうかを判定される値
戻り値:
マップが 1 つまたは複数のキーと指定された値をマッピングしている場合は true
例外:
ClassCastException - 値がマップに適さない型の場合 (省略可能)
NullPointerException - 指定された値が null であり、このマップが null 値を許可しない場合 (省略可能)

containsKey

public boolean containsKey(Object key)
マップが指定されたキーのマッピングを保持する場合に true を返します。つまり、このマップに、(key==null ? k==null : key.equals(k)) となるキー k が含まれている場合にだけ true を返します。このようなマッピングが 1 つだけあります。

この実装は entrySet() の内容を次々調べ、指定されたキーを持つエントリを検索します。そのようなエントリが見つかった場合は、true を返します。目的のエントリが見つからずに反復が終了した場合は、false を返します。この実装では、マップのサイズに正比例した時間が必要なことに注意してください。 多くの実装は、このメソッドをオーバーライドします。

定義:
インタフェース Map<K,V> 内の containsKey
パラメータ:
key - マップにあるかどうかが判定されるキー
戻り値:
マップが指定されたキーのマッピングを保持する場合は true
例外:
ClassCastException - キーがマップに適さない型の場合 (省略可能)
NullPointerException - 指定されたキーが null であり、このマップが null キーを許可しない場合 (省略可能)

get

public V get(Object key)
指定されたキーがマップされている値を返します。そのキーのマッピングがこのマップに含まれていない場合は null を返します。

つまり、このメソッドは、(key==null ? k==null : key.equals(k)) となるキー k から値 v へのマッピングがこのマップに含まれている場合は v を返し、それ以外の場合は null を返します。このようなマッピングが 1 つだけあります。

このマップが null 値を許可する場合、戻り値の null は、マップがキーのマッピングを保持していないことを示すとはかぎりません。つまり、マップが明示的にキーを null にマップすることもあります。containsKey オペレーションを使うと、この 2 つの場合を区別できます。

この実装は entrySet() の内容を次々調べ、指定されたキーを持つエントリを検索します。そのようなエントリが見つかった場合は、エントリの値を返します。目的のエントリが見つからずに反復が終了した場合は、null を返します。この実装では、マップのサイズに正比例した時間が必要なことに注意してください。 多くの実装は、このメソッドをオーバーライドします。

定義:
インタフェース Map<K,V> 内の get
パラメータ:
key - 関連付けられた値が返されるキー
戻り値:
指定されたキーがマップされている値。そのキーのマッピングがこのマップに含まれていない場合は null
例外:
ClassCastException - キーがマップに適さない型の場合 (省略可能)
NullPointerException - 指定されたキーが null であり、このマップが null キーを許可しない場合 (省略可能)

put

public V put(K key,
             V value)
指定された値と指定されたキーをこのマップに関連付けます (任意のオペレーション)。マップにすでにこのキーに対するマッピングがある場合、古い値は指定された値に置き換えられます。m.containsKey(k)true を返す場合に限り、マップ m は、キー k のマッピングを含むと言えます。

この実装は、常に UnsupportedOperationException をスローします。

定義:
インタフェース Map<K,V> 内の put
パラメータ:
key - 指定された値が関連付けられるキー
value - 指定されたキーに関連付けられる値
戻り値:
key に以前に関連付けられていた値。key のマッピングが存在しなかった場合は null。(null の戻り値は、実装が null 値をサポートしている場合、keynull を以前関連付けていたマップを示す場合もある)
例外:
UnsupportedOperationException - put オペレーションがこのマップでサポートされない場合
ClassCastException - 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合
NullPointerException - 指定されたキーまたは値が null であり、このマップが null のキーまたは値を許可しない場合
IllegalArgumentException - 指定されたキーまたは値のあるプロパティーが原因で、このマップにそれらを格納できない場合

remove

public V remove(Object key)
キーのマッピングがある場合に、そのマッピングをこのマップから削除します (任意のオペレーション)。k==null :key.equals(k)) という条件で、キー k から値 v までマッピングがマップに含まれる場合、このマッピングは削除されます。マップはこのようなマッピングを 1 つだけ含みます。

このマップが以前にこのキーを関連付けていた値を返します。キーに対するマッピングがマップになかった場合は null を返します。

このマップが null 値を許可する場合、戻り値の null は、マップがキーのマッピングを保持していなかったことを示すとはかぎりません。つまり、マップが明示的にキーを null にマップしていた可能性もあります。

一度呼び出しが返れば、マップは指定されたキーのマッピングを含みません。

この実装は entrySet() の内容を次々調べ、指定されたキーを持つエントリを検索します。そのようなエントリが見つかった場合は、エントリの値を実装の getValue オペレーションで取得し、エントリをコレクションとその基になるマップから削除します。削除は反復子の remove オペレーションを使い、保存された値が返されます。目的のエントリが見つからずに反復が終了した場合は、null を返します。この実装では、マップのサイズに正比例した時間が必要なことに注意してください。 多くの実装は、このメソッドをオーバーライドします。

entrySet 反復子が remove メソッドをサポートしないで、このマップが指定されたキーのマッピングを保持する場合は、この実装は UnsupportedOperationException をスローします。

定義:
インタフェース Map<K,V> 内の remove
パラメータ:
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) を呼び出した場合と同じです。オペレーションの進行中に、指定されたマップが変更された場合の、このオペレーションの動作は定義されていません。

この実装は、指定されたマップの entrySet() コレクションの内容を次々調べ、反復によって各エントリが返されるごとに、このマップの put オペレーションを 1 回呼び出します。

このマップが put オペレーションをサポートせず、指定マップが空でない場合、この実装は UnsupportedOperationException をスローします。

定義:
インタフェース Map<K,V> 内の putAll
パラメータ:
m - マップに格納されるマッピング
例外:
UnsupportedOperationException - putAll オペレーションがこのマップでサポートされない場合
ClassCastException - 指定されたマップ内のキーまたは値のクラスが原因で、マップに格納できない場合
NullPointerException - 指定されたマップが null である場合、またはこのマップが null のキーまたは値を許可せず、指定されたマップに null のキーまたは値が含まれている場合
IllegalArgumentException - 指定されたマップ内のあるキーまたは値のあるプロパティーが原因で、マップに格納できない場合

clear

public void clear()
マップからマッピングをすべて削除します (任意のオペレーション)。この呼び出しが戻ると、マップは空になります。

この実装は、entrySet().clear() を呼び出します。

entrySetclear オペレーションをサポートしない場合、この実装は UnsupportedOperationException をスローします。

定義:
インタフェース Map<K,V> 内の clear
例外:
UnsupportedOperationException - clear オペレーションがこのマップでサポートされない場合

keySet

public Set<K> keySet()
このマップに含まれるキーの Set ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットの反復処理中にマップが変更された場合、反復処理の結果は定義されません (反復子自身の remove オペレーションを除く)。削除は、Iterator.removeSet.removeremoveAllretainAll、および clear の各オペレーションを通して行います。Set は、add オペレーションや addAll オペレーションはサポートしていません。

この実装は、AbstractSet をサブクラス化するセットを返します。このサブクラスの iterator メソッドは、このマップの entrySet() 反復子の「ラッパーオブジェクト」を返します。size メソッドはこのマップの size メソッドに委譲し、contains メソッドは、このマップの containsKey メソッドに委譲します。

Set は、このメソッドが最初に呼び出されたときに作成され、それに続くすべての呼び出しに応じて返されます。同期は一切行われません。このため、わずかながら、このメソッドへの複数の呼び出しに対して、同じ Set が返されない可能性があります。

定義:
インタフェース Map<K,V> 内の keySet
戻り値:
マップに含まれているキーのセットビュー

values

public Collection<V> values()
このマップに含まれる値の Collection ビューを返します。コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。コレクションの反復処理中にマップが変更された場合、反復処理の結果は定義されません (反復子自身の remove オペレーションを除く)。コレクションは要素の削除をサポートしており、対応するマッピングをマップから削除できます。 削除は、Iterator.removeCollection.removeremoveAllretainAll、および clear オペレーションを通して行います。Set は、add オペレーションや addAll オペレーションはサポートしていません。

この実装は、AbstractCollection をサブクラス化するコレクションを返します。このサブクラスの iterator メソッドは、このマップの entrySet() 反復子の「ラッパーオブジェクト」を返します。size メソッドはこのマップの size メソッドに委譲し、contains メソッドは、このマップの containsValue メソッドに委譲します。

コレクションは、このメソッドが最初に呼び出されたときに作成され、それに続くすべての呼び出しに応じて返されます。同期は一切行われません。このため、わずかながら、このメソッドへの複数の呼び出しに対して、同じコレクションが返されない可能性があります。

定義:
インタフェース Map<K,V> 内の values
戻り値:
マップ内に含まれている値のコレクションビュー

entrySet

public abstract Set<Map.Entry<K,V>> entrySet()
インタフェース Map の記述:
このマップに含まれるマップの Set ビューを返します。セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。セットに対する反復の処理中にマップが変更された場合は、反復処理の結果は定義されません (反復子自身の remove オペレーション、または反復子により返されるマップエントリに対する setValue オペレーションを除く)。 セットは、要素の削除をサポートしており、対応するマッピングをマップから削除できます。削除は、Iterator.removeSet.removeremoveAllretainAll、および clear の各オペレーションを通して行います。Set は、add オペレーションや addAll オペレーションはサポートしていません。

定義:
インタフェース Map<K,V> 内の entrySet
戻り値:
マップ内に保持されているマッピングのセットビュー

equals

public boolean equals(Object o)
指定されたオブジェクトがこのマップと等しいかどうかを比較します。指定されたオブジェクトがマップであり、2 つのマップが同じマッピングを表す場合に true を返します。つまり、m1.entrySet().equals(m2.entrySet()) である場合、2 つのマップ m1m2 は同じマッピングを表します。これにより、Map インタフェースの実装が異なる場合でも、equals メソッドが正しく動作することが保証されます。

この実装は、指定されたオブジェクトがこのマップ自身であるかどうかを最初に調べます。このマップである場合、実装は true を返し指定されたオブジェクトについて、このマップと同じサイズのマップであるかどうかを調べます。同じサイズのマップでない場合は false を返します。同じサイズのマップである場合は、このマップの entrySet コレクションの内容を次々調べて、指定されたマップに、このマップが格納している各マッピングが含まれているかどうかを調べます。指定されたマップにそのようなマッピングがない場合は、false が返されます。反復が完了した場合に true が返されます。

定義:
インタフェース Map<K,V> 内の equals
オーバーライド:
クラス Object 内の equals
パラメータ:
o - このマップと等しいかどうかを比較するオブジェクト
戻り値:
指定されたオブジェクトがマップと等しい場合は true
関連項目:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
マップのハッシュコード値を返します。マップのハッシュコードは、マップの entrySet() ビューにある各エントリのハッシュコードの合計です。これにより、Object.hashCode() の一般規約で要求されるとおりに、任意の 2 つのマップ m1m2 について、m1.equals(m2) の場合 m1.hashCode()==m2.hashCode() になります。

この実装は、セットの各要素 (エントリ) の hashCode() を呼び出して、entrySet() の内容を次々調べ、結果を加算していきます。

定義:
インタフェース Map<K,V> 内の hashCode
オーバーライド:
クラス Object 内の hashCode
戻り値:
マップのハッシュコード値
関連項目:
Map.Entry.hashCode(), Object.equals(Object), Set.equals(Object)

toString

public String toString()
このマップの文字列表現を返します。文字列表現は、キーと値のマッピングをマップの entrySet ビューの反復子が返した順に中括弧 ("{}") で囲んで示すリストです。隣接するマッピングは、文字 ", " (コンマと空白文字) によって区切られます。各キーと値のマッピングは、キーのあとに等号 ("=") が続き、その次にキーと関連付けられる値が続くという形で描画されます。キーと値は、String.valueOf(Object) を実行したかのように文字列に変換されます。

オーバーライド:
クラス Object 内の toString
戻り値:
このマップの文字列表現

clone

protected Object clone()
                throws CloneNotSupportedException
AbstractMap のインスタンスのシャローコピーを返します。キーと値は、それ自体は複製されません。

オーバーライド:
クラス Object 内の clone
戻り値:
このマップのシャローコピー
例外:
CloneNotSupportedException - オブジェクトのクラスが Cloneable インタフェースをサポートしていない場合。clone メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがある
関連項目:
Cloneable

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。