Collection

个人学习,有好多不懂的,见谅 


一、Collection

  Collection为集合类。个人理解为数据结构,如何对数据进行存储、增删改查、遍历等操作。

二、解析

public interface Collection<E> extends Iterable<E> {
    // Query Operations

    /**
     * 返回集合大小,最大值为Integer.MAX_VALUE
     */
    int size();

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

    /**
     * 判断o是否属于此集合
     */
    boolean contains(Object o);

    /**
     * 返回集合元素迭代器,无法保证元素的返回顺序
     *(除非此集合是某个提供保证的类的实例)
     */
    Iterator<E> iterator();

    /**
     * 转换为Object类型组数并返回
     */
    Object[] toArray();

    /**
     * 转换为T类型组数并返回
     */
    <T> T[] toArray(T[] a);

    // Modification Operations

    /**
     * 添加一个元素
     */
    boolean add(E e);

    /**
     * 删除一个元素
     */
    boolean remove(Object o);


    // Bulk Operations

    /**
     * 判断此集合是否包含集合c
     */
    boolean containsAll(Collection<?> c);

    /**
     * 添加集合c
     */
    boolean addAll(Collection<? extends E> c);

    /**
     * 删除集合c
     */
    boolean removeAll(Collection<?> c);

    /**
     * 该方传递参数为函数式,传递内容是一个接口类型
     * 定义为一个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;
    }

    /**
     * 求当前集合与c的共有的元素,返回给当前集合
     */
    boolean retainAll(Collection<?> c);

    /**
     * 清空集合
     */
    void clear();


    // Comparison and hashing

    /**
     * 判断元素是否相同
     */
    boolean equals(Object o);

    /**
     * 获取hashCode
     */
    int hashCode();

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值