Java 9 中 Stream API 新增了哪些特性?


在 Java 9 中,Oracle 公司為 **Stream API** 添加了四個有用的新方法。這些方法是 **iterate()**、**ofNullable()**、**takeWhile()** 和 **dropWhile()**。

iterate()

**iterate()** 可以用作傳統 **for 迴圈** 的 Stream 版本替代方案。此方法透過新增另一個引數 **Predicate** 介面得到了改進,該介面允許我們根據使用 **Predicate** 介面定義的條件來停止這些無限數字。

示例

import java.util.stream.Stream;
public class StreamIterateMethodTest {
   public static void main(String[] args) {
      Stream.iterate(1, i -> i < 5, i -> i + 1).forEach(System.out::println); // iterate()
   }
}

輸出

1
2
3
4


ofNullable()

**ofNullable()** 方法如果元素 **不為空**,則返回該元素的 **stream 物件**。否則,它返回一個 **空** stream。

示例

import java.util.stream.Stream;
public class StreamOfNullableMethodTest {
   public static void main(String[] args) {
      String str = "TutorialsPoint";
      Stream.ofNullable(str).forEach(System.out::println);    // ofNullable() method
   }
}

輸出

TutorialsPoint


takeWhile()

傳遞給 **takeWhile()** 方法的引數是 **Predicate** 介面。此方法從 **左到右** 獲取 stream 物件的元素,直到 **Predicate** 物件的條件不再滿足。

示例

import java.util.stream.Stream;
public class StreamTakeWhileMethodTest {
   public static void main(String[] args) {
      Stream.of(1, 2, 3, 4, 5)
         .takeWhile(i -> i < 5)         // takeWhile() method
         .forEach(System.out::println);
   }
}

輸出

1
2
3
4


dropWhile()

傳遞給 **dropWhile()** 方法的引數也是 **Predicate** 介面。它與 **takeWhile()** 方法相反。此方法從 **左到右** 傳遞 stream 物件中的每個元素,並忽略滿足條件的所有元素。一旦條件不再滿足,它就會獲取所有剩餘元素以返回。

示例

import java.util.stream.Stream;
public class StreamDropWhileMethodTest {
   public static void main(String[] args) {
      Stream.of(3, 2, 1, 4, 6, 7, 8, 9, 10)
            .dropWhile(i -> i < 5)     // dropWhile() method
            .forEach(System.out::println);
   }
}

輸出

6
7
8
9
10

更新於:2020年2月21日

109 次瀏覽

啟動您的 職業生涯

完成課程後獲得認證

開始學習
廣告
© . All rights reserved.