定义了集合类的一些基本操作:

public interface Collection<E> extends Iterable<E> {
    //-------这些是查询相关的操作----------
 
       //获取当前集合中的元素数量
    int size();
 
    //查看当前集合是否为空
    boolean isEmpty();
 
    //查询当前集合中是否包含某个元素
    boolean contains(Object o);
 
    //返回当前集合的迭代器,我们会在后面介绍
    Iterator<E> iterator();
 
    //将集合转换为数组的形式
    Object[] toArray();
 
    //支持泛型的数组转换,同上
    <T> T[] toArray(T[] a);
 
    //-------这些是修改相关的操作----------
 
    //向集合中添加元素,不同的集合类具体实现可能会对插入的元素有要求,
      //这个操作并不是一定会添加成功,所以添加成功返回true,否则返回false
    boolean add(E e);
 
    //从集合中移除某个元素,同样的,移除成功返回true,否则false
    boolean remove(Object o);
 
 
    //-------这些是批量执行的操作----------
 
    //查询当前集合是否包含给定集合中所有的元素
      //从数学角度来说,就是看给定集合是不是当前集合的子集
    boolean containsAll(Collection<?> c);
 
    //添加给定集合中所有的元素
      //从数学角度来说,就是将当前集合变成当前集合与给定集合的并集
      //添加成功返回true,否则返回false
    boolean addAll(Collection<? extends E> c);
 
    //移除给定集合中出现的所有元素,如果某个元素在当前集合中不存在,那么忽略这个元素
      //从数学角度来说,就是求当前集合与给定集合的差集
      //移除成功返回true,否则false
    boolean removeAll(Collection<?> c);
 
    //Java8新增方法,根据给定的Predicate条件进行元素移除操作
    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;
    }
 
    //只保留当前集合中在给定集合中出现的元素,其他元素一律移除
      //从数学角度来说,就是求当前集合与给定集合的交集
      //移除成功返回true,否则false
    boolean retainAll(Collection<?> c);
 
    //清空整个集合,删除所有元素
    void clear();
 
 
    //-------这些是比较以及哈希计算相关的操作----------
 
    //判断两个集合是否相等
    boolean equals(Object o);
 
    //计算当前整个集合对象的哈希值
    int hashCode();
 
    //与迭代器作用相同,但是是并行执行的,我们会在下一章多线程部分中进行介绍
    @Override
    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }
 
    //生成当前集合的流,我们会在后面进行讲解
    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }
 
    //生成当前集合的并行流,我们会在下一章多线程部分中进行介绍
    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }
}