在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()方法返回流 对象 ,如果它是一个元素的非空。否则,它将返回一个空 流。
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()方法的参数是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()方法的参数也是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