Java 9向Stream
接口添加了4种新方法:
1. dropWhile
dropWhile
方法类似于skip
方法,但使用Predicate
而不是固定的整数值。 当Predicate
为true时,它将从输入流中删除元素。 然后将所有剩余的元素传递到输出流。 例如:
IntStream.range(0, 10).dropWhile(i -> i < 5).forEach(System.out::println);
// prints 5, 6, 7, 8, 9
2.服用时
takeWhile
方法类似于limit
方法。 它在Predicate
为true时从输入流中获取元素并将其传递到输出流。 例如:
IntStream.range(0, 10).takeWhile(i -> i < 5).forEach(System.out::println);
// prints 0, 1, 2, 3, 4
注意:使用时要小心 当您有一个无序的流时,dropWhile和takeWhile
,因为您可能会在输出流中获得一些takeWhile
元素。
3. ofNullable
ofNullable
方法如果元素为null,则返回空流,如果非null,则返回单元素流。 这样就无需在构造流之前进行空检查。
Stream.ofNullable(null).count(); // prints 0
Stream.ofNullable("foo").count(); // prints 1
4.迭代
Java 9中已重载了静态iterate
方法,以允许您使用for循环语法创建流。 例如:
Stream.iterate(0, i -> i < 10, i -> i + 1).forEach(System.out::println); //prints from 0 to 9
翻译自: https://www.javacodegeeks.com/2017/12/java-9-enhancements-stream-api.html