- 类型参数:
E- 此集合中元素的类型
- 所有已实现的接口:
Iterable<E>,Collection<E>
- 已知子类:
AbstractList,AbstractQueue,AbstractSet,ArrayDeque,ConcurrentLinkedDeque
Collection 接口的骨架实现,以最大限度地减少实现此接口所需的工作量。
要实现不可修改的集合,程序员只需扩展此类并提供iterator 和size 方法的实现。 (iterator 方法返回的迭代器必须实现 hasNext 和 next。)
要实现可修改的集合,程序员必须额外覆盖此类的 add 方法(否则会抛出 UnsupportedOperationException ),并且 iterator 方法返回的迭代器必须额外实现其 remove 方法。
程序员通常应根据 Collection 接口规范中的建议提供 void(无参数)和 Collection 构造函数。
此类中每个非抽象方法的文档都详细描述了它的实现。如果正在实现的集合允许更有效的实现,则可以重写这些方法中的每一个。
此类是 Java 集合框架 的成员。
- 自从:
- 1.2
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述boolean确保此集合包含指定的元素(可选操作)。booleanaddAll(Collection<? extends E> c) 将指定集合中的所有元素添加到此集合(可选操作)。voidclear()从此集合中移除所有元素(可选操作)。boolean如果此集合包含指定元素,则返回true。booleancontainsAll(Collection<?> c) 如果此集合包含指定集合中的所有元素,则返回true。booleanisEmpty()如果此集合不包含任何元素,则返回true。iterator()返回此集合中包含的元素的迭代器。boolean从此集合中移除指定元素的单个实例(如果存在) (可选操作)。booleanremoveAll(Collection<?> c) 删除此集合的所有也包含在指定集合中的元素(可选操作)。booleanretainAll(Collection<?> c) 仅保留此集合中包含在指定集合中的元素(可选操作)。Object[]toArray()返回包含此集合中所有元素的数组。<T> T[]toArray(T[] a) 返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的类型。toString()返回此集合的字符串表示形式。在类 java.lang.Object 中声明的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait在接口 java.util.Collection 中声明的方法
equals, hashCode, parallelStream, removeIf, size, spliterator, stream, toArray
-
构造方法详细信息
-
AbstractCollection
protected AbstractCollection()唯一的构造方法。 (对于子类构造方法的调用,通常是隐式的。)
-
-
方法详情
-
iterator
返回此集合中包含的元素的迭代器。 -
isEmpty
public boolean isEmpty()如果此集合不包含任何元素,则返回true。- 指定者:
isEmpty在接口Collection<E>中- 实现要求:
-
此实现返回
size() == 0。 - 返回:
true如果此集合不包含任何元素
-
contains
如果此集合包含指定元素,则返回true。更正式地说,返回true当且仅当此集合包含至少一个元素e使得Objects.equals(o, e)。- 指定者:
contains在接口Collection<E>中- 实现要求:
- 此实现迭代集合中的元素,依次检查每个元素是否与指定元素相等。
- 参数:
o- 要测试其在此集合中是否存在的元素- 返回:
true如果这个集合包含指定的元素- 抛出:
ClassCastException- 如果指定元素的类型与此集合不兼容 (optional)NullPointerException- 如果指定元素为空且此集合不允许空元素 (optional)
-
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
确保此集合包含指定的元素(可选操作)。如果此集合因调用而更改,则返回true。 (如果此集合不允许重复且已包含指定元素,则返回false。)支持此操作的集合可能会限制可以添加到此集合的元素。特别是,一些馆藏会拒绝添加
null个元素,而另一些馆藏会限制可以添加的元素类型。集合类应在其文档中明确指定对可以添加的元素的任何限制。如果集合出于任何原因拒绝添加特定元素,而不是因为它已经包含该元素,则它必须抛出异常(而不是返回
false)。这保留了此调用返回后集合始终包含指定元素的不变性。- 指定者:
add在接口Collection<E>中- 实现要求:
-
这个实现总是抛出一个
UnsupportedOperationException。 - 参数:
e- 要确保其存在于此集合中的元素- 返回:
true如果此集合因调用而更改- 抛出:
UnsupportedOperationException- 如果此集合不支持add操作ClassCastException- 如果指定元素的类阻止将其添加到此集合NullPointerException- 如果指定元素为空且此集合不允许空元素IllegalArgumentException- 如果元素的某些属性阻止它被添加到这个集合IllegalStateException- 如果由于插入限制此时无法添加元素
-
remove
从此集合中移除指定元素的单个实例(如果存在)(可选操作)。更正式地说,如果此集合包含一个或多个此类元素,则删除一个元素e使得Objects.equals(o, e)。如果此集合包含指定元素,则返回true(或者等效地,如果此集合因调用而更改)。- 指定者:
remove在接口Collection<E>中- 实现要求:
-
此实现遍历集合以查找指定的元素。如果找到该元素,它会使用迭代器的 remove 方法从集合中移除该元素。
请注意,如果此集合的迭代器方法返回的迭代器未实现
remove方法并且此集合包含指定对象,则此实现将抛出UnsupportedOperationException。 - 参数:
o- 要从此集合中删除的元素(如果存在)- 返回:
true如果一个元素作为这个调用的结果被移除- 抛出:
UnsupportedOperationException- 如果此集合不支持remove操作ClassCastException- 如果指定元素的类型与此集合不兼容 (optional)NullPointerException- 如果指定元素为空且此集合不允许空元素 (optional)
-
containsAll
如果此集合包含指定集合中的所有元素,则返回true。- 指定者:
containsAll在接口Collection<E>中- 实现要求:
-
此实现迭代指定的集合,依次检查迭代器返回的每个元素以查看它是否包含在此集合中。如果所有元素都如此包含,则返回
true,否则返回false。 - 参数:
c- 要检查的集合是否包含在此集合中- 返回:
true如果此集合包含指定集合中的所有元素- 抛出:
ClassCastException- 如果指定集合中的一个或多个元素的类型与此集合不兼容 (optional)NullPointerException- 如果指定的集合包含一个或多个空元素并且此集合不允许空元素 (optional),或者如果指定的集合为空。- 参见:
-
addAll
将指定集合中的所有元素添加到此集合(可选操作)。如果在操作进行时修改了指定的集合,则此操作的行为是未定义的。 (这意味着如果指定的集合是这个集合并且这个集合是非空的,那么这个调用的行为是未定义的。)- 指定者:
addAll在接口Collection<E>中- 实现要求:
-
此实现迭代指定的集合,并将迭代器返回的每个对象依次添加到此集合中。
请注意,此实现将抛出
UnsupportedOperationException,除非add被覆盖(假设指定的集合非空)。 - 参数:
c- 包含要添加到此集合的元素的集合- 返回:
true如果此集合因调用而更改- 抛出:
UnsupportedOperationException- 如果此集合不支持addAll操作ClassCastException- 如果指定集合的元素的类阻止将其添加到此集合NullPointerException- 如果指定的集合包含空元素并且此集合不允许空元素,或者如果指定的集合为空IllegalArgumentException- 如果指定集合的元素的某些属性阻止将其添加到此集合IllegalStateException- 如果由于插入限制此时不能添加所有元素- 参见:
-
removeAll
删除此集合的所有也包含在指定集合中的元素(可选操作)。此调用返回后,此集合将不包含与指定集合共有的元素。- 指定者:
removeAll在接口Collection<E>中- 实现要求:
-
此实现迭代此集合,依次检查迭代器返回的每个元素以查看它是否包含在指定集合中。如果它是这样包含的,则使用迭代器的
remove方法将其从该集合中删除。请注意,如果
iterator方法返回的迭代器未实现remove方法并且此集合包含一个或多个与指定集合共有的元素,则此实现将抛出UnsupportedOperationException。 - 参数:
c- 包含要从此集合中删除的元素的集合- 返回:
true如果此集合因调用而更改- 抛出:
UnsupportedOperationException- 如果此集合不支持removeAll方法ClassCastException- 如果此集合中的一个或多个元素的类型与指定集合不兼容 (optional)NullPointerException- 如果此集合包含一个或多个空元素并且指定的集合不支持空元素 (optional),或者如果指定的集合为空- 参见:
-
retainAll
仅保留此集合中包含在指定集合中的元素(可选操作)。换句话说,从该集合中移除所有未包含在指定集合中的元素。- 指定者:
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
返回此集合的字符串表示形式。字符串表示形式由集合元素的列表组成,这些元素按其迭代器返回的顺序排列,括在方括号 ("[]") 中。相邻元素由字符", "(逗号和空格)分隔。元素按String.valueOf(Object)转换为字符串。
-