Java集合框架源码分析 - Collection接口
Collection是所有列表类容器的顶层接口,在Collection框架的位置如下图所示,
没有类直接实现Collection接口的,Collection和真正的实现类中间会有其他接口或者抽象类存在,后面我们一个一个的讲。
Collection接口作为Collection框架的顶层接口,几乎声明了所有Collection型容器的所有方法,是否重复List和Set接口对它进行了补充,我们看下Collection有哪儿写方法声明。
描述符和返回值 | 方法名 | 方法描述 |
---|---|---|
boolean |
add(E e) |
向容器里添加元素,如果容器不允许添加重复的元素,比如Set,则会返回失败,如果不是因为重复的原因返回失败,一定要抛出异常。 |
boolean |
addAll(Collection<? extends E> c) |
和add()方法一样,这个方法是增加一个容器里的内容到现有的容器中。 |
void |
clear() |
清空容器里的所有元素。 |
boolean |
contains(Object o) |
是否包括一个元素,比较方法一定是通过equals判断,而不是判断它的引用 |
boolean |
containsAll(Collection<?> c) |
判断现有容器是否包括参数容器里的所有元素,如果容器类型不一样或者转换失败,会抛出异常。 |
boolean |
equals(Object o) |
重写了Object的equals方法。 |
int |
hashCode() |
重写Obejct的hashCode()方法。 |
boolean |
isEmpty() |
容器是否为空。 |
Iterator<E> |
iterator() |
返回容器一个迭代器。 |
default Stream<E> |
parallelStream() |
返回一个并发流,用的比较少。 |
boolean |
remove(Object o) |
如果包括一个元素,则会从容器中删除它。 |
boolean |
removeAll(Collection<?> c) |
和remove一样,清空容器c的所有元素 |
default boolean |
removeIf(Predicate<? super E> filter) |
清空满足传入的过滤器的所有元素。 |
boolean |
retainAll(Collection<?> c) |
和removeAll相反,这个方法会保留在容器C里的元素。 |
int |
size() |
返回容器中元素的个数 |
default Spliterator<E> |
spliterator() |
创建容器的一个并发迭代器,Java8之后才有。 |
default Stream<E> |
stream() |
返回Stream流,java8之后才有 |
Object[] |
toArray() |
按照容器中元素的顺序返回一个包括所有元素的数组,返回的数组已经和容器没有任何关系了,可以随便修改,是数组和容器的桥梁方法。 |
<T> T[] |
toArray(T[] a) |
和上面的方法功能一样,参数传入的数组和返回的数组是同一个。 |