public interface Collection<E> extends Iterable<E>
这个接口是集合框架的最上层接口,继承自Iterable接口,表明该接口的子子孙孙都是可迭代的。
int size();
返回元素个数的方法
boolean isEmpty();
判断是否为空的方法
boolean contains(Object o);
判断是否包含某元素的方法
Iterator<E> iterator();
获取迭代器的方法
Object[] toArray();
转换成数组的方法
<T> T[] toArray(T[] a);
也是转换成数组的方法不过返回的是泛型中指定的数据类型数组
boolean add(E e);
添加元素的方法
boolean remove(Object o);
删除元素的方法
boolean containsAll(Collection<?> c);
判断是否包含参数集合全部元素的方法
boolean addAll(Collection<? extends E> c);
将参数集合中全部元素添加进本对象的方法
boolean removeAll(Collection<?> c);
从本对象中删除参数集合全部元素的方法
default boolean removeIf(Predicate<? super E> filter) {
Objects.requireNonNull(filter);
boolean removed = false;
final Iterator<E> each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}
jdk8中新增方法,default关键字可以在接口中定义具体方法。
首先调用util包Objects类的静态方法判断参数是否为空,如果为空就抛异常。
参数是个接口,用来断言的。
接下来定义变量removed,默认为false。
然后调用iterator方法获取迭代器。
进入while循环,迭代元素。
如果每一个迭代的元素都符合断言,具体是怎么回事要看具体实现类,如果符合断言,就删除这个元素,将removed设为true
最后返回removed
boolean retainAll(Collection<?> c);
这个方法使本对象只保留参数集合的元素。
void clear();
清除元素的方法。
boolean equals(Object o);
判断相等的方法。
int hashCode();
返回哈希值的方法。
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
default方法,返回一个Spliterator对象,这个对象是用来分割和移动集合的类,此处不多赘述。
default Stream<E> stream() {
return StreamSupport.stream(spliterator(), false);
}
default方法,返回一个Stream对象,Stream对象是一个元素序列可以对元素进行顺序操作和平行操作。
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
default方法,返回一个Stream对象。
Collection接口的源码到此为止。