モジュール java.base
パッケージ 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 (引数なし)およびmapコンストラクタを指定する必要があります。

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

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

導入されたバージョン:
1.2
関連項目:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    クラス
    説明
    static class 
    キーと値を保持するエントリ。
    static class 
    キーと値を保守する変更不可のエントリ。

    インタフェースjava.util.Mapで宣言されたネストされたクラス/インタフェース

    Map.Entry<K,V>
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    唯一のコンストラクタです。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    void
    マップからマッピングをすべて削除します(オプションの操作)。
    protected Object
    このAbstractMapインスタンスのシャロー・コピーを返します: キーと値自体はクローンされません。
    boolean
    指定されたキーのマッピングがこのマップに含まれている場合にtrueを返します。
    boolean
    このマップが1つまたは複数のキーと指定された値をマッピングしている場合にtrueを返します。
    boolean
    指定されたオブジェクトがこのマップと等しいかどうかを比較します。
    get(Object key)
    指定されたキーがマップされている値を返します。そのキーのマッピングがこのマップに含まれていない場合はnullを返します。
    int
    マップのハッシュ・コード値を返します。
    boolean
    このマップがキーと値のマッピングを保持しない場合にtrueを返します。
    このマップに含まれるキーのSetビューを返します。
    put(K key, V value)
    指定された値と指定されたキーをこのマップで関連付けます(オプションの操作)。
    void
    putAll(Map<? extends K,? extends V> m)
    指定されたマップのすべてのマッピングをこのマップにコピーします(オプションの操作)。
    このマップからキーのマッピング(ある場合)を削除します(オプションの操作)。
    int
    このマップ内のキー値マッピングの数を返します。
    このマップの文字列表現を返します。
    このマップに含まれる値のCollectionビューを返します。

    クラスjava.lang.Objectで宣言されたメソッド

    finalize, getClass, notify, notifyAll, wait, wait, wait

    インタフェースjava.util.Mapで宣言されたメソッド

    compute, computeIfAbsent, computeIfPresent, entrySet, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
  • コンストラクタの詳細

    • AbstractMap

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

    • size

      public int size()
      このマップ内のキー値マッピングの数を返します。 マップにInteger.MAX_VALUEを超える要素が含まれている場合は、Integer.MAX_VALUEを返します。
      定義:
      インタフェースMap<K,V>内のsize
      実装要件:
      この実装はentrySet().size()を返します。
      戻り値:
      このマップ内のキーと値のマッピングの数
    • isEmpty

      public boolean isEmpty()
      このマップがキーと値のマッピングを保持しない場合にtrueを返します。
      定義:
      インタフェースMap<K,V>内のisEmpty
      実装要件:
      この実装はsize() == 0を返します。
      戻り値:
      このマップがキーと値のマッピングを保持しない場合はtrue
    • containsValue

      public boolean containsValue(Object value)
      このマップが1つまたは複数のキーと指定された値をマッピングしている場合にtrueを返します。 より正式には、このマップに値vへのマッピングがObjects.equals(value, 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から値vへのマッピング(Objects.equals(key, k)など)が含まれる場合、このメソッドは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には、m.containsKey(k)trueを返す場合にのみ、キーkのマッピングが含まれていると記述されます。)
      定義:
      インタフェースMap<K,V>内のput
      実装要件:
      この実装は、常にUnsupportedOperationExceptionをスローします。
      パラメータ:
      key - 指定された値が関連付けられるキー
      value - 指定されたキーに関連付けられる値
      戻り値:
      keyに以前に関連付けられていた値。keyのマッピングが存在しなかった場合はnull (nullの戻り値は、実装でnull値がサポートされている場合、マップが以前にnullkeyに関連付けたことも示すことができます。)
      例外:
      UnsupportedOperationException - putオペレーションがこのマップでサポートされない場合
      ClassCastException - 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合
      NullPointerException - 指定されたキーまたは値がnullであり、このマップがnullのキーまたは値を許可しない場合
      IllegalArgumentException - 指定されたキーまたは値のあるプロパティが原因で、このマップにそれらを格納できない場合
    • remove

      public V remove(Object key)
      このマップからキーのマッピング(ある場合)を削除します(オプションの操作)。 より正式には、このマップにキーkから値vへのマッピングが含まれている場合(Objects.equals(key, k)など)、そのマッピングは削除されます。 マップはこのようなマッピングを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()を呼び出します。

      entrySetclear操作をサポートしていない場合、この実装はUnsupportedOperationExceptionをスローすることに注意してください。

      例外:
      UnsupportedOperationException - clear操作がこのマップでサポートされていない場合
    • keySet

      public Set<K> keySet()
      このマップに含まれるキーのSetビューを返します。 セットはマップと連動しているので、マップに対する変更はセットに反映され、また、セットに対する変更はマップに反映されます。 セットの反復処理中にマップが変更された場合、反復処理の結果は定義されていません(イテレータ自身のremoveオペレーションを除く)。 セットは要素の削除をサポートします。Iterator.removeSet.removeremoveAllretainAll、およびclearオペレーションで対応するマッピングをマップから削除します。 addまたはaddAll操作はサポートされていません。
      定義:
      インタフェースMap<K,V>内のkeySet
      実装要件:
      この実装は、AbstractSetをサブクラス化するセットを返します。 サブクラスのイテレータ・メソッドは、このマップのentrySet()イテレータに"ラッパー・オブジェクト"を返します。 sizeメソッドは、このマップのsizeメソッドに委任され、containsメソッドは、このマップのcontainsKeyメソッドに委任されます。

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

      戻り値:
      マップに含まれているキーのセット・ビュー
    • values

      public Collection<V> values()
      このマップに含まれる値のCollectionビューを返します。 コレクションはマップと連動しているので、マップに対する変更はコレクションに反映され、またコレクションに対する変更はマップに反映されます。 コレクションの反復処理中にマップが変更された場合、反復処理の結果は定義されません(イテレータ自身のremoveオペレーションを除く)。 コレクションは要素の削除をサポートしており、対応するマッピングをマップから削除できます。削除は、Iterator.removeCollection.removeremoveAllretainAll、およびclearオペレーションを通して行います。 addまたはaddAll操作はサポートされていません。
      定義:
      インタフェースMap<K,V>内のvalues
      実装要件:
      この実装は、AbstractCollectionをサブクラス化するコレクションを返します。 サブクラスのイテレータ・メソッドは、このマップのentrySet()イテレータに"ラッパー・オブジェクト"を返します。 sizeメソッドは、このマップのsizeメソッドに委任され、containsメソッドは、このマップのcontainsValueメソッドに委任されます。

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

      戻り値:
      マップ内に含まれている値のコレクション・ビュー
    • equals

      public boolean equals(Object o)
      指定されたオブジェクトがこのマップと等しいかどうかを比較します。 指定されたオブジェクトもマップであり、2つのマップが同じマッピングを表す場合にtrueを返します。 つまり、m1.entrySet().equals(m2.entrySet())である場合、2つのマップm1m2は同じマッピングを表します。 これにより、equalsメソッドがMapインタフェースのさまざまな実装間で正しく動作することが保証されます。
      定義:
      インタフェースMap<K,V>内のequals
      オーバーライド:
      equals、クラスObject
      実装要件:
      この実装では、最初に指定されたオブジェクトがこのマップであるかどうかをチェックし、その場合はtrueを返します。 次に、指定したオブジェクトが、このマップのサイズと同一のマップであるかどうかをチェックします。マップされていない場合は、falseを返します。 その場合、このマップのentrySetコレクションに対して反復処理が行われ、指定したマップにこのマップに含まれる各マッピングが含まれていることを確認します。 指定したマップにこのようなマッピングが含まれていない場合、falseが返されます。 反復が完了すると、trueが返されます。
      パラメータ:
      o - このマップと等しいかどうかが比較されるオブジェクト
      戻り値:
      指定されたオブジェクトがこのマップと等しい場合はtrue
      関連項目:
    • hashCode

      public int hashCode()
      マップのハッシュ・コード値を返します。 マップのハッシュ・コードは、マップのentrySet()ビューの各エントリのハッシュ・コードの合計として定義されます。 これにより、Object.hashCode()の一般的な契約で必要となる、m1およびm2の2つのマップに対してm1.equals(m2)m1.hashCode()==m2.hashCode()であることを意味します。
      定義:
      インタフェースMap<K,V>内のhashCode
      オーバーライド:
      hashCode、クラスObject
      実装要件:
      この実装では、entrySet()を繰り返し、セット内の各要素(entry)でhashCode()をコールし、結果を追加します。
      戻り値:
      マップのハッシュ・コード値
      関連項目:
    • toString

      public String toString()
      このマップの文字列表現を返します。 文字列表現は、マップのentrySetビューのイテレータによって返される順序で、中カッコ("{}")で囲まれたキーと値のマッピングのリストで構成されます。 隣接するマッピングは、文字", " (カンマと空白文字)によって区切られます。 各キーと値のマッピングは、キーとしてレンダリングされ、その後に等号("=")が続き、関連付けられた値が続きます。 キーと値は、String.valueOf(Object)により文字列に変換されます。
      オーバーライド:
      toString、クラスObject
      戻り値:
      このマップの文字列表現
    • clone

      protected Object clone() throws CloneNotSupportedException
      このAbstractMapインスタンスのシャロー・コピーを返します: キーと値自体はクローンされません。
      オーバーライド:
      clone、クラスObject
      戻り値:
      このマップのシャロー・コピー
      例外:
      CloneNotSupportedException - オブジェクトのクラスがCloneableインタフェースをサポートしていない場合。 cloneメソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがある。
      関連項目: