モジュール java.base
パッケージ 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>
      不変のキーと値を維持するエントリ。
      • インタフェース 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)
      指定されたキーがマップされている値を返します。このマップにそのキーのマッピングが含まれていない場合は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ビューを返します。
    • コンストラクタの詳細

      • AbstractMap

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

      • size

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

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

        public boolean containsValue​(Object value)
        このマップが1つまたは複数のキーと指定された値をマッピングしている場合にtrueを返します。 より正式には、このマップがObjects.equals(value, v)のような値vへの少なくとも1つのマッピングを含む場合に限り、trueを返します。 Mapインタフェースのほとんどの実装で、このオペレーションにかかる時間はマップのサイズに正比例します。
        定義:
        containsValue、インタフェース: Map<K,V>
        実装要件:
        この実装はentrySet()の内容を次々調べ、指定された値を持つエントリを検索します。 そのようなエントリが見つかった場合は、trueを返します。 目的のエントリが見つからずに反復が終了した場合は、falseを返します。 この実装では、マップのサイズに正比例した時間が必要なことに注意してください。
        パラメータ:
        value - このマップにあるかどうかが判定される値
        戻り値:
        このマップが1つまたは複数のキーを指定された値にマッピングしている場合はtrue
        例外:
        ClassCastException - 値がマップに適さない型の場合(オプション)
        NullPointerException - 指定された値がnullであり、このマップがnull値を許可しない場合(オプション)
      • containsKey

        public boolean containsKey​(Object key)
        指定されたキーのマッピングがこのマップに含まれている場合にtrueを返します。 より正式には、このマップがObjects.equals(key, k)のようなキーkのマッピングを含む場合に限り、trueを返します。 このようなマッピングは1つのみ存在できます。
        定義:
        containsKey、インタフェース: Map<K,V>
        実装要件:
        この実装は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つの場合を区別できます。

        定義:
        get、インタフェース: Map<K,V>
        実装要件:
        この実装はentrySet()の内容を次々調べ、指定されたキーを持つエントリを検索します。 そのようなエントリが見つかった場合は、エントリの値を返します。 目的のエントリが見つからずに反復が終了した場合は、nullを返します。 この実装では、マップのサイズに正比例した時間が必要なことに注意してください。多くの実装は、このメソッドをオーバーライドします。
        パラメータ:
        key - 関連付けられた値が返されるキー
        戻り値:
        指定されたキーがマップされている値。このマップにそのキーのマッピングが含まれていない場合はnull
        例外:
        ClassCastException - このキーがこのマップに適さない型の場合(オプション)
        NullPointerException - 指定されたキーがnullであり、このマップがnullキーを許可しない場合(オプション)
      • put

        public V put​(K key,
                     V value)
        指定された値と指定されたキーをこのマップで関連付けます(オプションの操作)。 マップにすでにこのキーに対するマッピングがある場合、古い値は指定された値に置き換えられます。 m.containsKey(k)trueを返す場合に限り、マップmはキーkのマッピングを含むと言えます。
        定義:
        put、インタフェース: Map<K,V>
        実装要件:
        この実装は、常にUnsupportedOperationExceptionをスローします。
        パラメータ:
        key - 指定された値が関連付けられるキー
        value - 指定されたキーに関連付けられる値
        戻り値:
        keyに以前に関連付けられていた値。keyのマッピングが存在しなかった場合はnull (実装がnull値をサポートしている場合、戻り値nullは、以前にマップがnullkeyを関連付けていたことを示す場合もある。)
        例外:
        UnsupportedOperationException - putオペレーションがこのマップでサポートされない場合
        ClassCastException - 指定されたキーまたは値のクラスが原因で、このマップにそれらを格納できない場合
        NullPointerException - 指定されたキーまたは値がnullであり、このマップがnullのキーまたは値を許可しない場合
        IllegalArgumentException - 指定されたキーまたは値のあるプロパティが原因で、このマップにそれらを格納できない場合
      • remove

        public V remove​(Object key)
        このマップからキーのマッピング(ある場合)を削除します(オプションの操作)。 より正式には、このマップに、kからObjects.equals(key, k)のような値vへのマッピングが含まれている場合、そのマッピングは削除されます。 マップはこのようなマッピングを1つだけ含めることができます。

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

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

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

        定義:
        remove、インタフェース: Map<K,V>
        実装要件:
        この実装は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回呼び出した場合と同じです。 オペレーションの進行中に、指定されたマップが変更された場合の、このオペレーションの動作は定義されていません。
        定義:
        putAll、インタフェース: Map<K,V>
        実装要件:
        この実装は、指定されたマップのentrySet()コレクションの内容を次々調べ、反復によって各エントリが返されるごとに、このマップのputオペレーションを1回呼び出します。

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

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

        public void clear​()
        マップからマッピングをすべて削除します(オプションの操作)。 この呼出しが戻ると、マップは空になります。
        定義:
        clear、インタフェース: Map<K,V>
        実装要件:
        この実装は、entrySet().clear()を呼び出します。

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

        例外:
        UnsupportedOperationException - clearオペレーションがこのマップでサポートされない場合
      • keySet

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

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

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

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

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

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

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

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

        public int hashCode​()
        マップのハッシュ・コード値を返します。 マップのハッシュ・コードは、そのマップのentrySet()ビュー内の各エントリのハッシュ・コードの合計になるように定義されます。 これにより、Object.hashCode()の一般規約によって要求されるように、任意の2つのマップm1m2m1.equals(m2)であれば、m1.hashCode()==m2.hashCode()となることが保証されます。
        定義:
        hashCode、インタフェース: Map<K,V>
        オーバーライド:
        hashCode、クラス: Object
        実装要件:
        この実装は、セットの各要素(エントリ)のhashCode()を呼び出して、entrySet()の内容を次々調べ、結果を加算していきます。
        戻り値:
        マップのハッシュ・コード値
        関連項目:
        Map.Entry.hashCode(), Object.equals(Object), Set.equals(Object)
      • toString

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

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