Collection源码:
package java.util;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
public interface Collection extends Iterable {
//定义长度
int size();
//是否为空
boolean isEmpty();
//是否包含某个元素
boolean contains(Object o);
//返回一个迭代器iterator
Iterator iterator();
//返回集合中所有元素组成的数组,数组元素的返回顺序要和迭代器访问集合元素的返回顺序一样
Object[] toArray();
//返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
T[] toArray(T[] a);
//向集合中添加一个元素,如果集合不允许重复元素,且集合中已经含有该元素,返回false
boolean add(E e);
//从此集合中移除一个指定元素,如果集合中存在指定元素,返回true
boolean remove(Object o);
//如果此集合中包含指定集合中的所有元素,则返回true
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 each = iterator();
while (each.hasNext()) {
if (filter.test(each.next())) {
each.remove();
removed = true;
}
}
return removed;
}
//仅保留此集合中那些也包含在指定集合中的元素
boolean retainAll(Collection<?> c);
//移除此集合的所有元素
void clear();
//比较次集合与指定对象是否相等,通过覆盖,实现list与list相等,set与set相等
boolean equals(Object o);
//返回此集合的哈希值
int hashCode();
@Override
default Spliterator spliterator() {
return Spliterators.spliterator(this, 0);
}
default Stream stream(){
return StreamSupport.stream(spliterator(), false);
}
default Stream parallelStream(){
return StreamSupport.stream(spliterator(), true);
}
}
从源码中可以看出Collection是一个接口,它是一个高度抽象出来的集合,包含了集合的基本操作:添加、删除、清空、遍历、是否为空、获取大小等。