Collection是List接口和Set接口的父接口,继承迭代器Iterable接口

package java.util;

import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;


public interface Collection<E> extends Iterable<E> {
    // Query Operations
    // get方法 查询方法***********************************************************//
    int size();  // 集合元素容量
    boolean isEmpty(); //集合空,返回true
    boolean contains(Object o);//集合包含对象o,返回true
    Iterator<E> iterator(); //集合的迭代器
    Object[] toArray();//由此集合中所有对象元素构成一个Object数组
    <T> T[] toArray(T[] a); //由此集合中所有对象元素构成一个泛型数组
    //alter 方法***************************************************************//
    boolean add(E e);//添加一个对象
    boolean remove(Object o);//移除一个对象o
    //扩展方法******************************************************************//
    //如果集合c是此集合子集,返回true
    boolean containsAll(Collection<?> c);
    //把集合c中所有元素添加到此集合
    boolean addAll(Collection<? extends E> c);
    //删除此集合中 与集合c交集中元素
    boolean removeAll(Collection<?> c);
    //删除此集合中满足给定Predicate的所有元素。迭代期间或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;
    }
    //仅保留此集合中包含在指定集合中的元素(可选操作)。
    //输入一个集合,保留交集
    boolean retainAll(Collection<?> c);
    //清空,移除此容器对象所有元素
    void clear();
    // 比较两个对象地址值hashcode
    boolean equals(Object o);
    // get此集合的地址值hashCode
    int hashCode();
    // create可分割迭代器
    @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);
    }
}