https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html
public interface Collection<E> extends Iterable<E>
E,代表这个集合中的元素类型。
父接口:Iterable<E>
子接口:BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, Deque<E>, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>, TransferQueue<E>
一、简介
Collection<E>是Java集合框架的一个根接口(另一个是Map)。
JDK并不提供此接口的任何直接实现(类),而是提供了Collection接口的一些子接口的实现,如Set接口和List接口。所以这个接口通常用来在需要最大通用性的地方传递集合并对其进行操作。
Bags or multisets(可能包含重复元素的无序集合),应该直接实现这个接口。
所有一般用途的Collection实现(类) (通常是通过Collection接口的子接口间接实现),都应该提供两个标准构造函数:
- 第一个,一个无参构造函数,用来创建一个空的集合
- 第二个,一个有单个Collection类型的参数的构造函数,用来创建一个新集合,包含和它的参数类型一致的元素。
实际上,第二种构造函数允许用户复制任何集合,来生成所需实现类型的等效集合。当然你也没法强制执行这个规约,因为接口不包含构造函数,但Java平台库中的所有通常用途的Collection实现(类)都遵守这个规约。
此接口中的 "破坏性 " 方法 (即修改它们所操作的集合的方法) 被指定为在该集合不支持该操作时抛出 UnsupportedOperationException异常。但如果方法的调用对集合没有影响,则这些方法可能(但不是一定)抛出UnsupportedOperationException。例如, 如果要添加的集合为空, 则在不可修改集合上调用 addAll (Collection) 方法可能 (但不是一定) 引发异常。
某些集合实现对它们可能包含的元素有限制。例如, 某些实现禁止空元素, 有些则对其元素的类型有限制。
尝试添加不合格的元素会引发未检查的异常, 通常为 NullPointerException or ClassCastException。
尝试查询不合格元素的存在可能引发异常, 也可能只是返回 false。一些实现将展示前者的行为, 有些将展示后者。
通常,尝试对不合格元素进行操作可能会成功,也可能引发异常。但是其完成不会导致将不合格的元素插入到集合中
每种集合可以自定义它的同步策略。
在没有实现类的强保证下,调用一个正在被其它线程(占用)修改的集合中的方法可能导致未知的行为,这包括直接调用、将集合传递给可能执行调用的方法以及使用现有迭代器检查集合。
集合框架接口中的许多方法是根据equals方法定义的。例如,contains(Object o)方法的规范指出“当且仅当这个集合包含至少一个这样的e元素时(o==null?e==null:o.equals(e)),返回true”。这条规范不应被解释为它表明使用非空参数o调用Collection.contains()方法时,将导致操作o.equals(e)对每个元素e都进行(有至少一个就行了)。
实现类则可以自由地进行优化,从而避免调用equals方法。例如,比较两个元素(对象)的hashcode(两个hashcode不相等的object,我们定义为不相等)。
更普遍地,集合框架中不同接口的实现类可以自由地在合适的地方利用Object抽象类中指定的方法。
对集合执行递归遍历的某些集合操作可能会因为该集合直接或者间接包含自身引用的实例而失败,也会有一个异常提示这种情况。
默认的方法实现(如通过继承获得)不适用与任何的同步协议,如果一个集合实现类有一个特定的同步协议,那么它必须重写这些默认的方法,以可以适配相应的同步协议。
二、接口方法
1、int size()
2、boolean isEmpty()
3、boolean contains(Object o)
4、Iterator<E> iterator()
5、Object[] toArray()
6、<T> T[] toArray(T[] a)
7、boolean add(E e)
8、boolean remove(Object o)
9、boolean containsAll(Collection<?> c)
10、boolean addAll(Collection<? extends E> c)
11、boolean removeAll(Collection<?> c)
12、default boolean removeIf(Predicate<? super E> filter)
13、boolean retainAll(Collection<?> c)
14、void clear()
15、boolean equals(Object o)
16、int hashCode()
17、default Spliterator<E> spliterator()
18、default Stream<E> stream()
19、default Stream<E> parallelStream()