集合源碼分析[1]-Collection 源碼分析
阿新 • • 發佈:2019-03-23
所有 新增 分享 ext spl 引入 req iterators clas
目錄
- Collection
- 1. 介紹
- 2. 繼承關系
- 3. 方法
- 4. JDK8新增的方法
- removeIf(Predicate<? super E> filter)
- Spliterator<E> spliterator()
- Stream<E> stream()
- Stream<E> parallelStream()
- 5. 總結
Collection
1. 介紹
該類是所有集合的子類
2. 繼承關系
3. 方法
4. JDK8新增的方法
removeIf(Predicate<? super E> filter)
使用lambda方式移除元素
default boolean removeIf(Predicate<? super E> filter) { //校驗lambda是否為空 Objects.requireNonNull(filter); boolean removed = false; //獲取叠代器 final Iterator<E> each = iterator(); //循環判斷 while (each.hasNext()) { //如果該方法執行返回true則移除該元素 if (filter.test(each.next())) { each.remove(); removed = true; } } //返回是否成功移除 return removed; }
Spliterator<E> spliterator()
返回並發分割器,用於並發流式處理的時候調用
@Override
default Spliterator<E> spliterator() {
return Spliterators.spliterator(this, 0);
}
Stream<E> stream()
返回流對象
default Stream<E> stream() { return StreamSupport.stream(spliterator(), false); }
Stream<E> parallelStream()
返回並發流式對象
default Stream<E> parallelStream() {
return StreamSupport.stream(spliterator(), true);
}
5. 總結
- 在Collection中定義了一些常用的接口,供子類去實現
- 在JDK1.8中新增了一些方法,例如獲取獲取流式函數的方法
- 在這個接口中引入了default方法
集合源碼分析[1]-Collection 源碼分析