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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP