モジュール java.base
パッケージ java.util

クラスAbstractSet<E>

java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractSet<E>
型パラメータ:
E - このセットで保持される要素の型
すべての実装されたインタフェース:
Iterable<E>, Collection<E>, Set<E>
直系の既知のサブクラス:
ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, TreeSet

public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
このクラスは、Setインタフェースのスケルトン実装を提供し、このインタフェースを実装するのに必要な作業量を最小限に抑えます。

このクラスを拡張してセットを実装するプロセスは、AbstractCollectionを拡張してCollectionを実装するプロセスと同じです。ただし、このクラスのサブクラスにあるメソッドおよびコンストラクタのすべては、Setインタフェースによって課される追加の制限に従う必要があります。たとえば、addメソッドは、1つのオブジェクトの複数インスタンスをセットに追加する処理を許容すべきではありません。

このクラスは、AbstractCollectionクラスによる実装を一切オーバーライドしません。 単に、equalshashCodeの実装を追加するだけです。

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

導入されたバージョン:
1.2
関連項目:
Collection, AbstractCollection, Set
  • コンストラクタの詳細

    • AbstractSet

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

    • equals

      public boolean equals(Object o)
      指定されたオブジェクトがセットと同じかどうかを比較します。 指定されたオブジェクトがセットであり、2つのセットのサイズが等しく、指定されたセットのすべてのメンバーがこのセットに含まれている場合にtrueを返します。 これにより、Setインタフェースの実装が異なる場合でも、equalsメソッドが正しく動作することが保証されます。

      この実装は、指定されたオブジェクトがこのセット自身であるかどうかを最初に調べます。このセットである場合、実装はtrueを返します。 次に、指定されたオブジェクトについて、このセットと同じサイズのセットであるかどうかを調べます。指定されたオブジェクトがこのセットと同じサイズのセットではない場合はfalseを返します。 指定されたオブジェクトがこのセットと同じサイズのセットである場合は、containsAll((Collection) o)の結果を返します。

      定義:
      equals、インタフェース: Collection<E>
      定義:
      equals、インタフェース: Set<E>
      オーバーライド:
      equals 、クラス:  Object
      パラメータ:
      o - このセットと等しいかどうかが比較されるオブジェクト
      戻り値:
      指定されたオブジェクトがこのセットに等しい場合はtrue
      関連項目:
      Object.hashCode()HashMap
    • hashCode

      public int hashCode()
      セットのハッシュ・コード値を返します。 セットのハッシュ・コードは、そのセット内の要素のハッシュ・コードの合計になるように定義されています。ただし、null要素のハッシュ・コードはゼロになるように定義されています。 これにより、Object.hashCode()の一般規約によって要求されるように、任意の2つのセットs1s2s1.equals(s2)であれば、s1.hashCode()==s2.hashCode()となることが保証されます。

      この実装は、セットの各要素に対してhashCodeメソッドを呼び出して、セットに対して反復処理を行い、結果を加算していきます。

      定義:
      hashCode、インタフェース: Collection<E>
      定義:
      hashCode、インタフェース: Set<E>
      オーバーライド:
      hashCode 、クラス:  Object
      戻り値:
      セットのハッシュ・コード値
      関連項目:
      Object.equals(Object), Set.equals(Object)
    • removeAll

      public boolean removeAll(Collection<?> c)
      このセットから、指定されたコレクションに含まれる要素をすべて削除します(オプションの操作)。 指定されたコレクションもセットである場合、このオペレーションは、その値が2つのセットの非対称集合差分になるようにこのセットを効率的に変更します。

      この実装は、sizeメソッドを呼び出して、このセットと指定されたコレクションのどちらが小さいかを判別します。 このセットの要素の方が少ない場合、実装はこのセットのイテレータが返す順に各要素が指定されたコレクション内に含まれるかどうかを確認します。 含まれていた場合、イテレータのremoveメソッドによってこのセットから要素を削除します。 指定されたコレクションの方が要素が少ない場合、実装は指定されたコレクションに対して反復を行い、イテレータによって返された各要素を、このセットのremoveメソッドを用いてセットから削除します。

      この実装は、iteratorメソッドが返したイテレータがremoveメソッドを実装しない場合にUnsupportedOperationExceptionをスローします。

      定義:
      removeAll、インタフェース: Collection<E>
      定義:
      removeAll、インタフェース: Set<E>
      オーバーライド:
      removeAll、クラス: AbstractCollection<E>
      パラメータ:
      c - このセットから削除される要素を含むコレクション
      戻り値:
      呼出しの結果としてこのセットが変更された場合はtrue
      例外:
      UnsupportedOperationException - removeAllオペレーションがこのセットでサポートされない場合
      ClassCastException - このセットのある要素のクラスが、指定されたコレクションと互換でない場合(オプション)
      NullPointerException - このセットにnull要素が含まれており、指定されたコレクションがnull要素を許可しない場合(オプション)、または指定されたコレクションがnullの場合
      関連項目:
      AbstractCollection.remove(Object), AbstractCollection.contains(Object)