JDK源码分析Iterable和Collection接口
java集合的类图 如图
Iterable和Collection接口做为顶级接口,那么要想解析集合包,就从他们开始.
Iterable接口
作用
此接口算是一个标识,实现此接口则能达到成为foreach目标的效果
方法
返回一个迭代器
1 |
|
对内部元素进行遍历 1.8NEW
1 |
|
1 |
|
此方法先调用Objects的方法查验传入的泛型是否为空,否则就抛出异常,与接口的注释意思一致
在当前元素上创建一个分离器 1.8NEW
1 |
|
关于分离器:
分离器是用于遍历和划分源元素的对象。说白了就是创建一个并行迭代器,满足当前多cpu高性能的需求。
default关键字 1.8NEW
这俩个1.8新加上的接口都用了default修饰,此修饰词也是1.8加上的,代表实现接口的类可以不实现此修饰词修饰的方法.
Collection接口
说明
- 集合的根接口
- 无法直接实现此接口,只能实现其特定子接口
- 此接口用于最大化的操纵集合
- Collection 接口存储一组不唯一,无序的对象。
常用的方法
public boolean add(E e):添加一个元素
public void clear():清空集合中所有的元素
public boolean remove(E e):移除集合中指定的元素
public boolean contains(E e):检查集合中是否包含指定的对象
public boolean isEmpty():判断集合是否为空
public void size():判断集合中元素的个数
public Object[] toArray():把集合元素存储到数
组中
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; }
1
2
3
4
5
6
7
删除此集合中满足给定*谓词的所有元素。
2. ```
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}在当前元素上创建一个分离器
```
default Streamstream() { return StreamSupport.stream(spliterator(), false);
}
1
2
3
4
5
6
7
8
9
10
11
返回以该集合为源的顺序{
4. ```
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}返回与此集合作为其源的可能并行的{@code Stream}。此方法允许返回顺序流。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!