JavaTM 2 Platform
Standard Ed. 5.0

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

java.lang.Object
  上位を拡張 java.util.AbstractMap<K,V>
すべての実装されたインタフェース:
Map<K,V>
直系の既知のサブクラス:
ConcurrentHashMap, 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

入れ子のクラスの概要
 
インタフェース 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()
          このマップに格納されているマッピングのセットビューを返します。
 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> t)
          指定されたマップのすべてのマッピングをこのマップにコピーします (任意のオペレーション)。
 V remove(Object key)
          このキーにマッピングがある場合に、そのマッピングをマップから削除します (任意のオペレーション)。
 int size()
          マップ内のキーと値のマッピングの数を返します。
 String toString()
          このマップの文字列表現を返します。
 Collection<V> values()
          このマップに格納されている値のコレクションビューを返します。
 
クラス 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 を返します。ほとんどのマップの実装では、このオペレーションはマップのサイズに正比例した時間がかかると考えられます。

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

定義:
インタフェース Map<K,V> 内の containsValue
パラメータ:
value - マップにあるかどうかを判定される値
戻り値:
このマップが 1 つ以上のキーにこの値をマッピングする場合は true

containsKey

public boolean containsKey(Object key)
マップが指定されたキーのマッピングを保持する場合に true を返します。

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

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

get

public V get(Object key)
このマップによる指定されたキーのマッピング先となる値を返します。このキーへのマッピングをマップが含まない場合は null を返します。戻り値が null の場合でも、キーへのマッピングがマップにないとは限りません。マップが明示的に、キーを null にマッピングしている可能性もあります。containsKey オペレーションを使うと、この 2 つの場合を区別できます。

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

定義:
インタフェース Map<K,V> 内の get
パラメータ:
key - 関連付けられた値が返されるキー
戻り値:
マップが指定されたキーをマップする値
例外:
NullPointerException - キーが null のときに、マップが null キーを許可しない場合
関連項目:
containsKey(Object)

put

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

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

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

remove

public V remove(Object key)
このキーにマッピングがある場合に、そのマッピングをマップから削除します (任意のオペレーション)。

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

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

定義:
インタフェース Map<K,V> 内の remove
パラメータ:
key - マッピングがマップから削除されるキー
戻り値:
指定されたキーに関連した以前の値。キーにエントリがなかった場合は null。(null の戻り値は、実装が null 値をサポートしている場合、指定されたキーと null を以前関連付けていたマップを示す場合もある)
例外:
UnsupportedOperationException - このマップが remove オペレーションをサポートしない場合

putAll

public void putAll(Map<? extends K,? extends V> t)
指定されたマップのすべてのマッピングをこのマップにコピーします (任意のオペレーション)。指定されたマップに現在あるすべてのキーに対してこのマップが持っていたすべてのマッピングは、コピーされるマッピングにより置き換えられます。

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

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

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

clear

public void clear()
マップからマッピングをすべて削除します (任意のオペレーション)。

この実装は、entrySet().clear() を呼び出します。 entrySetclear オペレーションをサポートしない場合、この実装は UnsupportedOperationException をスローします。

定義:
インタフェース Map<K,V> 内の clear
例外:
UnsupportedOperationException - clear がマップによってサポートされていない場合

keySet

public Set<K> keySet()
このマップに格納されているキーの Set ビューを返します。Set はこのマップを基にしているので、マップへの変更、および Set への変更は、反映されます。Set での繰り返し処理が進行中にマップが変更された場合、反復の結果は定義されていません。Set は要素の削除をサポートしており、対応するエントリをマップから削除することができます。削除は、Iterator.remove、Set.remove、removeAll、retainAll、および clear の各オペレーションを通して行います。add オペレーションと addAll オペレーションはサポートされません。

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

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

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

values

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

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

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

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

entrySet

public abstract Set<Map.Entry<K,V>> entrySet()
このマップに格納されているマッピングのセットビューを返します。このセットの各要素は Map.Entry です。セットはこのマップを基にしているので、マップへの変更、およびセットへの変更は、互いに反映されます。セットでの繰り返し処理が進行中にマップが変更された場合、反復の結果は保証されません。セットは要素の削除をサポートしており、対応するエントリをマップから削除することができます。削除には、Iterator.removeSet.removeremoveAllretainAll、および clear オペレーションが使えます。add または addAll オペレーションはサポートされません。

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

equals

public boolean equals(Object o)
指定されたオブジェクトとこのマップが等しいかどうかを比較します。指定されたオブジェクトがマップであり、2 つのマップが同じマッピングを表す場合に true を返します。より厳密に言えば、t1.keySet().equals(t2.keySet()) であり、t1.keySet() にあるすべてのキー k について (t1.get(k)==null ? t2.get(k)==null : t1.get(k).equals(t2.get(k))) であるとき、2 つのマップ t1 および t2 は同じマッピングを表します。これにより、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 つのマップ t1t2 について、t1.equals(t2) の場合 t1.hashCode()==t2.hashCode() になります。

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

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

toString

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

この実装は空の文字列バッファを作成し、左中括弧を付加してから、マップの entrySet ビューを反復して調べて、各 map.entry の文字列表現を順に付加していきます。各要素の後には、文字列 ", " が付加されます。ただし、最後の要素の後には、", " ではなく右中括弧が付加されます。最後に文字列バッファから文字列を取得して返します。

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

clone

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

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

JavaTM 2 Platform
Standard Ed. 5.0

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

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