共同学习Java源代码--数据结构--Collection接口

来源:互联网 发布:java运行批处理 编辑:程序博客网 时间:2024/05/22 12:13

public interface Collection<E> extends Iterable<E>

这个接口是集合框架的最上层接口,继承自Iterable接口,表明该接口的子子孙孙都是可迭代的。

int size();

返回元素个数的方法

boolean isEmpty();

判断是否为空的方法

boolean contains(Object o);

判断是否包含某元素的方法

Iterator<E> iterator();

获取迭代器的方法

Object[] toArray();

转换成数组的方法

<T> T[] toArray(T[] a);

也是转换成数组的方法不过返回的是泛型中指定的数据类型数组

boolean add(E e);

添加元素的方法

boolean remove(Object o);

删除元素的方法

boolean containsAll(Collection<?> c);

判断是否包含参数集合全部元素的方法

boolean addAll(Collection<? extends E> 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();
                removed = true;
            }
        }
        return removed;
    }

jdk8中新增方法,default关键字可以在接口中定义具体方法。

首先调用util包Objects类的静态方法判断参数是否为空,如果为空就抛异常。

参数是个接口,用来断言的。

接下来定义变量removed,默认为false。

然后调用iterator方法获取迭代器。

进入while循环,迭代元素。

如果每一个迭代的元素都符合断言,具体是怎么回事要看具体实现类,如果符合断言,就删除这个元素,将removed设为true

最后返回removed

boolean retainAll(Collection<?> c);

这个方法使本对象只保留参数集合的元素。

void clear();

清除元素的方法。

boolean equals(Object o);

判断相等的方法。

int hashCode();

返回哈希值的方法。

    default Spliterator<E> spliterator() {
        return Spliterators.spliterator(this, 0);
    }

default方法,返回一个Spliterator对象,这个对象是用来分割和移动集合的类,此处不多赘述。

    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }

default方法,返回一个Stream对象,Stream对象是一个元素序列可以对元素进行顺序操作和平行操作。

    default Stream<E> parallelStream() {
        return StreamSupport.stream(spliterator(), true);
    }

default方法,返回一个Stream对象。

Collection接口的源码到此为止。

0 0