您的位置:首页 > 理论基础 > 数据结构算法

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

2016-05-05 20:28 323 查看
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接口的源码到此为止。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: