Java 9 改进的 Stream API 添加了一些便利的方法,使流处理更容易,并使用收集器编写复杂的查询。
Java 9 为 Stream 新增了几个方法:dropWhile、takeWhile、ofNullable,为 iterate 方法新增了一个重载方法。
takeWhile 语法
default Stream<T> takeWhile(Predicate<? super T> predicate)
takeWhile方法使用一个断言作为参数,返回给定 Stream 的子集直到断言语句第一次返回 false。如果第一个值不满足断言条件,将返回一个空的 Stream
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty()) .forEach(System.out::print); } }
takeWhile方法获取a,b和c的所有值,然后,一旦字符串为空,它将停止执行。
abc
dropWhile语法
default Stream<T> dropWhile(Predicate<? super T> predicate)
dropWhile 方法和 takeWhile 作用相反的,使用一个断言作为参数,直到断言语句第一次返回 true 才返回给定 Stream 的子集。
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty()) .forEach(System.out::print); System.out.println(); Stream.of("a","b","c","","e","","f").dropWhile(s-> !s.isEmpty()) .forEach(System.out::print); } }
dropWhile方法删除a,b和c值,然后,一旦字符串为空,它将获取所有值。
ef ef
Iterate语法
static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)
iterate方法现在具有hasNext断言作为参数,一旦hasNext断言返回false,它就会停止循环。
import java.util.stream.IntStream; public class Tester { public static void main(String[] args) { IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println); } }
输出
3 6 9
ofNullable语法
static <T> Stream<T> ofNullable(T t)
引入了ofNullable方法以防止NullPointerExceptions并避免对Stream进行空检查。 此方法返回一个包含单个元素的顺序Stream,否则返回一个空Stream。
import java.util.stream.Stream; public class Tester { public static void main(String[] args) { long count=Stream.ofNullable(100).count(); System.out.println(count); count=Stream.ofNullable(null).count(); System.out.println(count); } }
输出
1 0
参考链接
https://www.learnfk.com/java/java9-stream-api-improvements.html
标签:takeWhile,Stream,System,无涯,API,dropWhile,public,out From: https://blog.51cto.com/u_14033984/8987905