java 集合之Collection接口 方法 集合遍历
-
集合层次结构中的根接口。 一个集合代表一组对象,称为它的元素。 一些集合允许重复元素,而另一些则不允许。 有些是有序的,有些是无序的。 JDK 不提供此接口的任何直接实现:它提供了更具体的子接口(如 Set 和 List)的实现。 此接口通常用于传递集合并在需要最大通用性的地方操作它们。
-
Bags 或 multisets(可能包含重复元素的无序集合)应该直接实现这个接口。
-
所有通用 Collection 实现类(通常通过其子接口之一间接实现 Collection)应该提供两个“标准”构造函数:
- 一个 void(无参数)构造函数,它创建一个空集合
- 一个具有单个参数类型的构造函数集合,它创建一个具有与其参数相同的元素的新集合。
- 实际上,后一个构造函数允许用户复制任何集合,生成所需实现类型的等效集合。 没有办法强制执行此约定(因为接口不能包含构造函数),但 Java 平台库中的所有通用 Collection 实现都符合。
-
某些方法被指定为可选的。 如果集合实现没有实现特定的操作,它应该定义相应的方法来抛出 UnsupportedOperationException。 这些方法在集合接口的方法规范中被标记为“可选操作”。
-
一些 collection 实现对它们可能包含的元素有所限制。例如,某些实现禁止 null 元素,而某些实现则对元素的类型有限制。
- 尝试添加不合格的元素会引发未经检查的异常,通常为 NullPointerException 或 ClassCastException。
- 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回 false;
- 较为常见的是,尝试对不合格元素执行操作,其完成不会导致将不合格元素插入到集合中,这可能会引发异常,或者可能会成功,具体取决于实现的选择。 在此接口的规范中,此类异常被标记为“可选”。
-
由每个集合来确定自己的同步策略。 在没有更强大的实现保证的情况下,未定义的行为可能是由于在另一个线程正在改变的集合上调用任何方法; 这包括直接调用、将集合传递给可能执行调用的方法以及使用现有迭代器检查集合。
-
Collections Framework 接口中的许多方法都是根据 equals 方法定义的。
- 例如, contains(Object o) 方法的规范说:“当且仅当此集合包含至少一个元素 e 使得
(o==null ? e==null : o.equals(e))
(当o为null时,集合存在null;o非null时,集合中存在与o相等的元素)时才返回 true 。” - 本规范不应被解释为暗示使用非空参数 o 调用 Collection.contains 将导致为任何元素 e 调用
o.equals(e)
。 实现可以自由地实现优化,从而避免 equals 调用,例如,通过首先比较两个元素的哈希码(Object.hashCode()
规范保证哈希码不相等的两个对象不能相等)。更一般地说,只要实现者认为合适,各种集合框架接口的实现可以自由地利用底层对象方法的指定行为。
- 例如, contains(Object o) 方法的规范说:“当且仅当此集合包含至少一个元素 e 使得
-
一些对集合执行递归遍历的集合操作可能会失败,但对于自引用实例(其中集合直接或间接包含自身)除外。 这包括 clone()、equals()、hashCode() 和 toString() 方法。 实现可以选择性地处理自引用场景,但是大多数当前的实现都没有这样做。
-
集合只能存放引用数据类型的数据,不能是基本数据类型
方法
Modifier and Type | Method | Description |
---|---|---|
boolean |
add(E e) |
确保此集合包含指定的元素(可选操作)。 |
boolean |
addAll(Collection<? extends E> c) |
将指定集合中的所有元素添加到此集合(可选操作)。 |
void |
clear() |
从此集合中删除所有元素(可选操作)。 |
boolean |
contains(Object o) |
如果此集合包含指定的元素,则返回 true 。 |
boolean |
containsAll(Collection<?> c) |
如果此 collection 包含指定集合c中的所有元素,则返回 true。 |
boolean |
equals(Object o) |
比较此 collection 与指定对象是否相等。 |
int |
hashCode() |
返回此集合的哈希码值。 |
boolean |
isEmpty() |
如果此集合不包含元素,则返回 true 。 |
Iterator<E> |
iterator() |
返回在此 collection 的元素上进行迭代的迭代器。 |
default Stream<E> |
parallelStream() |
返回可能并行的 Stream 与此集合作为其来源。 |
boolean |
remove(Object o) |
从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。 |
boolean |
removeAll(Collection<?> c) |
移除此 collection 中那些也包含在指定集合c中的所有元素(可选操作)。 |
default boolean |