模块 java.base
 java.util

类 AbstractCollection<E>

java.lang.Object
java.util.AbstractCollection<E>
类型参数:
E - 此集合中元素的类型
所有已实现的接口:
Iterable<E> , Collection<E>
已知子类:
AbstractList , AbstractQueue , AbstractSet , ArrayDeque , ConcurrentLinkedDeque

public abstract class AbstractCollection<E> extends Object implements Collection <E>
此类提供 Collection 接口的骨架实现,以最大限度地减少实现此接口所需的工作量。

要实现不可修改的集合,程序员只需扩展此类并提供iteratorsize 方法的实现。 (iterator 方法返回的迭代器必须实现 hasNextnext。)

要实现可修改的集合,程序员必须额外覆盖此类的 add 方法(否则会抛出 UnsupportedOperationException ),并且 iterator 方法返回的迭代器必须额外实现其 remove 方法。

程序员通常应根据 Collection 接口规范中的建议提供 void(无参数)和 Collection 构造函数。

此类中每个非抽象方法的文档都详细描述了它的实现。如果正在实现的集合允许更有效的实现,则可以重写这些方法中的每一个。

此类是 Java 集合框架 的成员。

自从:
1.2
参见:
  • 构造方法总结

    构造方法
    修饰符
    构造方法
    描述
    protected
    唯一的构造方法。
  • 方法总结

    修饰符和类型
    方法
    描述
    boolean
    add(E e)
    确保此集合包含指定的元素(可选操作)。
    boolean
    addAll(Collection<? extends E> c)
    将指定集合中的所有元素添加到此集合(可选操作)。
    void
    从此集合中移除所有元素(可选操作)。
    boolean
    如果此集合包含指定元素,则返回 true
    boolean
    如果此集合包含指定集合中的所有元素,则返回 true
    boolean
    如果此集合不包含任何元素,则返回 true
    abstract Iterator<E>
    返回此集合中包含的元素的迭代器。
    boolean
    从此集合中移除指定元素的单个实例(如果存在) (可选操作)。
    boolean
    删除此集合的所有也包含在指定集合中的元素(可选操作)。
    boolean
    仅保留此集合中包含在指定集合中的元素(可选操作)。
    返回包含此集合中所有元素的数组。
    <T> T[]
    toArray(T[] a)
    返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的类型。
    返回此集合的字符串表示形式。

    在类 java.lang.Object 中声明的方法

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

    在接口 java.util.Collection 中声明的方法

    equals, hashCode, parallelStream, removeIf, size, spliterator, stream, toArray

    在接口 java.lang.Iterable 中声明的方法

    forEach
  • 构造方法详细信息

    • AbstractCollection

      protected AbstractCollection()
      唯一的构造方法。 (对于子类构造方法的调用,通常是隐式的。)
  • 方法详情

    • iterator

      public abstract Iterator <E > iterator()
      返回此集合中包含的元素的迭代器。
      指定者:
      iterator 在接口 Collection<E>
      指定者:
      iterator 在接口 Iterable<E>
      返回:
      此集合中包含的元素的迭代器
    • isEmpty

      public boolean isEmpty()
      如果此集合不包含任何元素,则返回 true
      指定者:
      isEmpty 在接口 Collection<E>
      实现要求:
      此实现返回 size() == 0
      返回:
      true 如果此集合不包含任何元素
    • contains

      public boolean contains(Object  o)
      如果此集合包含指定元素,则返回 true。更正式地说,返回 true 当且仅当此集合包含至少一个元素 e 使得 Objects.equals(o, e)
      指定者:
      contains 在接口 Collection<E>
      实现要求:
      此实现迭代集合中的元素,依次检查每个元素是否与指定元素相等。
      参数:
      o - 要测试其在此集合中是否存在的元素
      返回:
      true 如果这个集合包含指定的元素
      抛出:
      ClassCastException - 如果指定元素的类型与此集合不兼容 (optional)
      NullPointerException - 如果指定元素为空且此集合不允许空元素 (optional)
    • toArray

      public Object [] toArray()
      返回包含此集合中所有元素的数组。如果此集合对其迭代器返回其元素的顺序作出任何保证,则此方法必须以相同的顺序返回元素。返回数组的 运行时组件类型Object

      返回的数组将是“安全的”,因为此集合不维护对它的引用。 (换句话说,即使此集合由数组支持,此方法也必须分配一个新数组)。调用者因此可以自由修改返回的数组。

      指定者:
      toArray 在接口 Collection<E>
      实现要求:
      此实现返回一个数组,其中包含此集合的迭代器返回的所有元素,以相同的顺序存储在数组的连续元素中,从索引 0 开始。返回数组的长度等于迭代器返回的元素数,即使此集合的大小在迭代期间发生变化,如果集合允许在迭代期间并发修改,则可能会发生这种情况。 size 方法仅作为优化提示调用;即使迭代器返回不同数量的元素,也会返回正确的结果。

      此方法等效于:

       
       List<E> list = new ArrayList<E>(size());
       for (E e : this)
         list.add(e);
       return list.toArray();
        
      返回:
      一个数组,其 运行时组件类型Object,包含此集合中的所有元素
    • toArray

      public <T> T[] toArray(T[] a)
      返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的类型。如果集合适合指定的数组,则在其中返回。否则,将使用指定数组的运行时类型和此集合的大小分配一个新数组。

      如果此集合适合指定的数组并有剩余空间(即,数组的元素多于此集合),则紧接集合末尾的数组中的元素设置为 null 。 (这对于确定此集合的长度很有用仅有的如果调用者知道此集合不包含任何 null 元素。)

      如果此集合对其迭代器返回其元素的顺序作出任何保证,则此方法必须以相同的顺序返回元素。

      指定者:
      toArray 在接口 Collection<E>
      实现要求:
      此实现返回一个数组,其中包含此集合的迭代器以相同顺序返回的所有元素,存储在数组的连续元素中,从索引 0 开始。如果迭代器返回的元素数量太大而无法放入指定的数组中,那么这些元素将返回到一个新分配的数组中,该数组的长度等于迭代器返回的元素数量,即使此集合的大小发生变化在迭代期间,如果集合允许在迭代期间进行并发修改,则可能会发生这种情况。 size 方法仅作为优化提示调用;即使迭代器返回不同数量的元素,也会返回正确的结果。

      此方法等效于:

       
       List<E> list = new ArrayList<E>(size());
       for (E e : this)
         list.add(e);
       return list.toArray(a);
        
      类型参数:
      T - 包含集合的数组的组件类型
      参数:
      a - 这个集合的元素要存储到的数组,如果它足够大的话;否则,为此分配一个相同运行时类型的新数组。
      返回:
      包含此集合中所有元素的数组
      抛出:
      ArrayStoreException - 如果此集合中任何元素的运行时类型不可分配给指定数组的 运行时组件类型
      NullPointerException - 如果指定数组为空
    • add

      public boolean add(E  e)
      确保此集合包含指定的元素(可选操作)。如果此集合因调用而更改,则返回 true。 (如果此集合不允许重复且已包含指定元素,则返回 false。)

      支持此操作的集合可能会限制可以添加到此集合的元素。特别是,一些馆藏会拒绝添加null个元素,而另一些馆藏会限制可以添加的元素类型。集合类应在其文档中明确指定对可以添加的元素的任何限制。

      如果集合出于任何原因拒绝添加特定元素,而不是因为它已经包含该元素,则它必须抛出异常(而不是返回 false )。这保留了此调用返回后集合始终包含指定元素的不变性。

      指定者:
      add 在接口 Collection<E>
      实现要求:
      这个实现总是抛出一个 UnsupportedOperationException
      参数:
      e - 要确保其存在于此集合中的元素
      返回:
      true 如果此集合因调用而更改
      抛出:
      UnsupportedOperationException - 如果此集合不支持 add 操作
      ClassCastException - 如果指定元素的类阻止将其添加到此集合
      NullPointerException - 如果指定元素为空且此集合不允许空元素
      IllegalArgumentException - 如果元素的某些属性阻止它被添加到这个集合
      IllegalStateException - 如果由于插入限制此时无法添加元素
    • remove

      public boolean remove(Object  o)
      从此集合中移除指定元素的单个实例(如果存在)(可选操作)。更正式地说,如果此集合包含一个或多个此类元素,则删除一个元素 e 使得 Objects.equals(o, e) 。如果此集合包含指定元素,则返回 true(或者等效地,如果此集合因调用而更改)。
      指定者:
      remove 在接口 Collection<E>
      实现要求:
      此实现遍历集合以查找指定的元素。如果找到该元素,它会使用迭代器的 remove 方法从集合中移除该元素。

      请注意,如果此集合的迭代器方法返回的迭代器未实现 remove 方法并且此集合包含指定对象,则此实现将抛出 UnsupportedOperationException

      参数:
      o - 要从此集合中删除的元素(如果存在)
      返回:
      true 如果一个元素作为这个调用的结果被移除
      抛出:
      UnsupportedOperationException - 如果此集合不支持 remove 操作
      ClassCastException - 如果指定元素的类型与此集合不兼容 (optional)
      NullPointerException - 如果指定元素为空且此集合不允许空元素 (optional)
    • containsAll

      public boolean containsAll(Collection <?> c)
      如果此集合包含指定集合中的所有元素,则返回 true
      指定者:
      containsAll 在接口 Collection<E>
      实现要求:
      此实现迭代指定的集合,依次检查迭代器返回的每个元素以查看它是否包含在此集合中。如果所有元素都如此包含,则返回 true,否则返回 false
      参数:
      c - 要检查的集合是否包含在此集合中
      返回:
      true 如果此集合包含指定集合中的所有元素
      抛出:
      ClassCastException - 如果指定集合中的一个或多个元素的类型与此集合不兼容 (optional)
      NullPointerException - 如果指定的集合包含一个或多个空元素并且此集合不允许空元素 (optional),或者如果指定的集合为空。
      参见:
    • addAll

      public boolean addAll(Collection <? extends E > c)
      将指定集合中的所有元素添加到此集合(可选操作)。如果在操作进行时修改了指定的集合,则此操作的行为是未定义的。 (这意味着如果指定的集合是这个集合并且这个集合是非空的,那么这个调用的行为是未定义的。)
      指定者:
      addAll 在接口 Collection<E>
      实现要求:
      此实现迭代指定的集合,并将迭代器返回的每个对象依次添加到此集合中。

      请注意,此实现将抛出 UnsupportedOperationException,除非 add 被覆盖(假设指定的集合非空)。

      参数:
      c - 包含要添加到此集合的元素的集合
      返回:
      true 如果此集合因调用而更改
      抛出:
      UnsupportedOperationException - 如果此集合不支持 addAll 操作
      ClassCastException - 如果指定集合的元素的类阻止将其添加到此集合
      NullPointerException - 如果指定的集合包含空元素并且此集合不允许空元素,或者如果指定的集合为空
      IllegalArgumentException - 如果指定集合的元素的某些属性阻止将其添加到此集合
      IllegalStateException - 如果由于插入限制此时不能添加所有元素
      参见:
    • removeAll

      public boolean removeAll(Collection <?> c)
      删除此集合的所有也包含在指定集合中的元素(可选操作)。此调用返回后,此集合将不包含与指定集合共有的元素。
      指定者:
      removeAll 在接口 Collection<E>
      实现要求:
      此实现迭代此集合,依次检查迭代器返回的每个元素以查看它是否包含在指定集合中。如果它是这样包含的,则使用迭代器的 remove 方法将其从该集合中删除。

      请注意,如果 iterator 方法返回的迭代器未实现 remove 方法并且此集合包含一个或多个与指定集合共有的元素,则此实现将抛出 UnsupportedOperationException

      参数:
      c - 包含要从此集合中删除的元素的集合
      返回:
      true 如果此集合因调用而更改
      抛出:
      UnsupportedOperationException - 如果此集合不支持 removeAll 方法
      ClassCastException - 如果此集合中的一个或多个元素的类型与指定集合不兼容 (optional)
      NullPointerException - 如果此集合包含一个或多个空元素并且指定的集合不支持空元素 (optional),或者如果指定的集合为空
      参见:
    • retainAll

      public boolean retainAll(Collection <?> c)
      仅保留此集合中包含在指定集合中的元素(可选操作)。换句话说,从该集合中移除所有未包含在指定集合中的元素。
      指定者:
      retainAll 在接口 Collection<E>
      实现要求:
      此实现迭代此集合,依次检查迭代器返回的每个元素以查看它是否包含在指定集合中。如果它不是这样包含的,则使用迭代器的 remove 方法将其从该集合中删除。

      请注意,如果 iterator 方法返回的迭代器未实现 remove 方法并且此集合包含指定集合中不存在的一个或多个元素,则此实现将抛出 UnsupportedOperationException

      参数:
      c - 包含要保留在此集合中的元素的集合
      返回:
      true 如果此集合因调用而更改
      抛出:
      UnsupportedOperationException - 如果此集合不支持 retainAll 操作
      ClassCastException - 如果此集合中的一个或多个元素的类型与指定集合不兼容 (optional)
      NullPointerException - 如果此集合包含一个或多个空元素并且指定的集合不允许空元素 (optional),或者如果指定的集合为空
      参见:
    • clear

      public void clear()
      从此集合中移除所有元素(可选操作)。此方法返回后集合将为空。
      指定者:
      clear 在接口 Collection<E>
      实现要求:
      此实现迭代此集合,使用 Iterator.remove 操作删除每个元素。大多数实现可能会选择覆盖此方法以提高效率。

      请注意,如果此集合的 iterator 方法返回的迭代器未实现 remove 方法且此集合非空,则此实现将抛出 UnsupportedOperationException

      抛出:
      UnsupportedOperationException - 如果此集合不支持 clear 操作
    • toString

      public String  toString()
      返回此集合的字符串表示形式。字符串表示形式由集合元素的列表组成,这些元素按其迭代器返回的顺序排列,括在方括号 ("[]") 中。相邻元素由字符 ", "(逗号和空格)分隔。元素按 String.valueOf(Object) 转换为字符串。
      重写:
      toString 在类 Object
      返回:
      此集合的字符串表示形式