JDK源码--Collection

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41293896/article/details/88430913
public interface Collection<E> extends Iterable<E> {
    // Query Operations    原注释,不明意义

//定义size方法,应返回size大小,最大值为Integer.MAX_VALUE
int size();

//定义isEmpty方法,用于返回是否为空
boolean isEmpty();

//定义contains方法,判断一个obj是否属于此集合
boolean contains(Object o);

//定义迭代器方法,返回一个迭代器对象
Iterator<E> iterator();

//定义转换为转换Obj数组的方法,返回一个obj数组
Object[] toArray();

//定义转换为泛型T数组的方法,返回一个指定泛型的数组
<T> T[] toArray(T[] a);

//定义add方法,添加一个元素e,并返回添加成功标志
boolean add(E e);

//定义remove方法,移除一个元素obj,并返回移除元素成功标志
boolean remove(Object o);

//定义containsAll方法,判断是否包含集合实例对象c
boolean containsAll(Collection<?> c);

//定义addAll方法,添加集合实例对象c到本实例中
boolean addAll(Collection<? extends E> c);

//定义removeAll方法,从本实例中移除集合实力对象c
boolean removeAll(Collection<?> c);


/**
 * jdk8新增
 * 大意为:
 * 定义removeIf方法,该方传递参数为函数式,传递内容是一个接口类型,该接口类型
 * 定义为一个filter函数,该函数用于传递给Objects.requireNonNull判断,然后调用
 * 迭代器,将满足该定义的filter的本实例中的元素移除
 * @since 1.8
 */
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;
}

//定义retainAll方法,取本例与集合实例c的交集,判断交集元素数量是否大于0
boolean retainAll(Collection<?> c);

//定义clear方法,清除本例集合中的所有元素
void clear();

// Comparison and hashing    原注释,不明意义

//不解释
boolean equals(Object o);

//定义hashCode方法,获取hashCode标记的方法
int hashCode();

/**
 *jdk8新增
 *大意为:
 *将迭代器拆分,重写自Iterable接口,从已知元素数量的本例中返回拆分后的迭代器
 *此方法返回的为本类本身
 *子类可能重写迭代器拆分,将一个集合的迭代拆分为多个集合的迭代交由多个线程
 * @since 1.8
 */
@Override//重写父类
default Spliterator<E> spliterator() {
    return Spliterators.spliterator(this, 0);
}

/**
 * jdk8新增
 * 大意为:
 * 将默认的迭代器拆分后的结果,聚合为流,该流并非io中的流,
 * 是一种类似于数据排序操作流
 * @since 1.8
 */
default Stream<E> stream() {
    return StreamSupport.stream(spliterator(), false);
}

/**
 * jdk8新增
 * 同上,但是具体其他的实现中,因为可并行,所以可能是线程不安全的
 * 
 * @since 1.8
 */
default Stream<E> parallelStream() {
    return StreamSupport.stream(spliterator(), true);
}
public interface Iterable<T> {

//定义iterator方法,返回迭代器
Iterator<T> iterator();

/**
 * jdk8新增
 * 大意为:
 * 根据action调用Objects.requireNonNull进行过滤
 * 过滤结果调用for循环取出,
 * @since 1.8
 */
default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action);
    for (T t : this) {
        action.accept(t);
    }
}

/**
 * jdk8新增
 * 大意为:
 * 分离迭代器,将未知大小的迭代器进行拆分,返回拆分的迭代器本身
 * 
 * @since 1.8
 */
default Spliterator<T> spliterator() {
    return Spliterators.spliteratorUnknownSize(iterator(), 0);
}

猜你喜欢

转载自blog.csdn.net/qq_41293896/article/details/88430913