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

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

迭代()

迭代()可以被用作流替换传统的版本for循环。通过添加另一个参数Predicate接口,此方法得到了改进,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 = "nhooo";
      Stream.ofNullable(str).forEach(System.out::println);    // ofNullable() method   }
}

输出结果

nhooo


takeWhile()

传递给takeWhile()方法的参数是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