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