共同学习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接口的源码到此为止。
这个接口是集合框架的最上层接口,继承自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接口的源码到此为止。
相关文章推荐
- 共同学习Java源代码--数据结构--开篇语
- 数据结构之排序
- 数据结构——队列
- 数据结构实验之链表七:单链表中重复元素的删除
- poj 1151(线段树求面积并)
- 【面试笔试】数据结构与算法
- 数据结构之排序
- hdu 2461(线段树求面积并)
- 线索二叉树的前序、中序
- UVA10562 数据结构题目
- 数据结构实验之栈六:下一较大值(二)
- Java数据结构——堆排序实现
- 北京大学信息科学技术学院本科生课程体系课程大纲选登——数据结构与算法
- 使用JavaScript的数组实现数据结构中的队列与堆栈
- 堆的结构分析与应用
- poj1990
- redis命令支持复杂数据结构BST
- 【数据结构与算法】十七 栈 队列
- 数据结构——单链表
- 数据结构之队列