Java 9 中 Stream API 添加了哪些新功能?

javaobject oriented programmingprogramming更新于 2025/7/15 0:44:17

在 Java 9 中,Oracle Corporation 为 Stream API 添加了四个有用的新方法。这些方法是 iterate()、ofNullable()、takeWhile() 和 dropWhile()。

iterate()

iterate() 可用作传统 for 循环 的流版本替代品。此方法通过添加另一个参数进行了改进,即 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() 方法返回元素的流对象。否则,该方法返回一个空流。

示例

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  接口。此方法从左到右获取流对象的元素,直到 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() 方法相反。此方法从左到右传递流对象中的每个元素,并忽略所有满足条件的元素。一旦条件不再满足,它将返回所有剩余元素。

示例

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

相关文章


有用资源