Java1.8源码解析-Collection接口



package java.util;

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

//Collection接口继承自Iterable,他具有Iterable中的所有方法,并且对其进行了扩展
public interface Collection<E> extends Iterable<E> {

    //返回该集合中元素的多少
    int size();

    //返回此集合是否为空
    boolean isEmpty();

    //查看此集合是否包含此元素,如果包含返回true
    boolean contains(Object o);

    //返回此集合的一个迭代器
    Iterator<E> iterator();

    //返回此集合的所有数组所构成的一个数组
    Object[] toArray();


    //返回此集合的所有数组所构成的一个数组 会根据T的不同返回不同类型的数组
    <T> T[] toArray(T[] a);

    //在集合中添加元素
    boolean add(E e);

    //从集合中删除某个元素
    boolean remove(Object o);


    //传入一个集合,查看集合中是否包含全部元素,如果全部包含返回True
    boolean containsAll(Collection<?> c);

    //将一个集合全部添加到此集合中
    boolean addAll(Collection<? extends E> c);

    //删除此集合中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();
                //置其结果为true
                removed = true;
            }
        }
        return removed;
    }

    //删除此元素所有的元素
    void clear();


    //比较两个集合是否相等
    boolean equals(Object o);

    //返回此集合的HashCode
    int hashCode();

    //将集合分割为并行迭代器
    @Override
    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }

    //将其集合转化为Stream集合
    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }

    //返回可能并行的Stream与此集合作为其来源。 该方法允许返回顺序流。
    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_38345606/article/details/80684974
今日推荐