Collection
首先来看下Collection接口的层次结构,参考JDK1.8
现在来分析一下Collection接口的JDK源码:
public interface Collection<E> extends Iterable<E> {
//返回集合中元素的数量,如果这个集合中的元素数量大于Integer.MAX_VALUE,则返回Integer.MAX_VALUE。
int size();
//如果集合为空集合(不包含任何元素),则返回true;若至少包含一个元素,则返回false。
boolean isEmpty();
//如何集合中包含指定的元素,则返回true;否则返回false。
//更确切的说,当且仅当集合中至少包含一个满足(o == null? e == null : o.equals(e))的元素e时返回true。
//可以重写E的equals方法,来指定在何种情况下两个E对象是equals相等的。
boolean contains(Object o);
//返回在此集合的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此集合是某个能提供保证顺序的类实例)。
Iterator<E> iterator();
//按适当顺序返回一个包含此集合中所有元素的数组,如何此集合对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。
//返回的数组将是安全的?因为此集合并不维护对返回数组的任何引用,因此调用者可以随意修改返回的数组。
Object[] toArray();
//返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。如果指定的数组能容纳该 collection,则返回包含此
//collection 元素的数组。否则,将分配一个具有指定数组的运行时类型和此 collection 大小的新数组。如果指定的数组能容纳 collection,并有剩余空间(即数组的元素比 collection 的元素多),那么会将数组中紧接 collection 尾部的元素设置为null。(只有在调用者知道此 collection 没有包含任何null元素时才能用此方法确定 collection 的长度。)
如果此 collection 对其迭代器返回的元素顺序做出了某些保证,那么此方法必须以相同的顺序返回这些元素。
像toArray()方法一样,此方法充当基于数组的 API 与基于 collection 的 API 之间的桥梁。更进一步说,此方法允许对输出数组的运行时类型进行精确控制,并且在某些情况下,可以用来节省分配开销。
<T> T[] toArray(T[] a);
//
boolean add(E e);
//
}