1. 程式人生 > >集合源碼分析[1]-Collection 源碼分析

集合源碼分析[1]-Collection 源碼分析

所有 新增 分享 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. 總結

  1. 在Collection中定義了一些常用的接口,供子類去實現
  2. 在JDK1.8中新增了一些方法,例如獲取獲取流式函數的方法
  3. 在這個接口中引入了default方法

集合源碼分析[1]-Collection 源碼分析