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.