Java9系列第6篇-Stream流API的增强

banana




需要注意的是:对于无序Stream,如果存在多个与提供的Predicate匹配的元素(多个orange),则此操作返回值是不确定的。



这种方法看上去和Java 8中的Stream.filter()很相似,但是它们的不同之处在于filter()方法只是跳过了不匹配的元素,然后继续进行处理。然而takeWhile()方法在存在匹配项之后会跳过所有剩余的元素,有点像continue和break的区别。以下是具有相同流和Predicate的filter()方法示例:



String[] fruits = {“apple”, “banana”, “orange”, “mango”, “peach”};

Stream stream = Arrays.stream(fruits).filter(s -> !“orange”.equals(s));

stream.forEach(System.out::println);




控制台输出如下,只是把orange过滤掉了。



apple

banana

mango

peach




[]( )2.`Stream.dropWhile(Predicate)`

----------------------------------------------------------------------------------------



提供的Predicate条件在管道流中返回false之后,此元素后面的所有数据元素作为返回值返回。



String[] fruits = {“apple”, “banana”, “orange”, “mango”, “peach”};

Stream stream = Arrays.stream(fruits)

                        .dropWhile(s -> !"orange".equals(s));

stream.forEach(System.out::println);




在上面示例中,一旦Predicate条件`!"orange".equals(s)`返回false,管道流中剩余的元素将被接受(不被过滤),作为返回值返回:



orange

mango

peach




[]( )3.`Stream Stream.iterate(T,Predicate,UnaryOperator)`

-------------------------------------------------------------------------------------------------------------



一旦Predicate条件返回false,此方法将返回一个顺序流,该顺序流将停止迭代操作。T为初始值,迭代操作由UnaryOperator来提供



Stream iterate = Stream.iterate(“-”,

                              s -> s.length() < 5,    //Predicate条件

                              s -> s + "-");   //迭代操作

iterate.forEach(System.out::println);




控制台打印输出的结果,只输出四个横杠,到第五个的时候停止。这是由Predicate条件决定的。








[]( )4.`Stream Stream.ofNullable(T)`

----------------------------------------------------------------------------------------



此方法返回一个包含单个元素的顺序Stream。如果提供的元素为null,则此方法返回空Stream。当我们要将非空单个元素附加到流时,此方法很有用。例如:



String nullableItem = “peach”;

Stream stream = Stream.of(“apple”, “banana”, “orange”);

Stream stream2 = Stream.concat(stream, Stream.ofNullable(nullableItem));

stream2.forEach(System.out::println);




控制台打印输出结果如下:



apple

最后

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档

MySQL全家桶笔记

还有更多面试复习笔记分享如下

Java架构专题面试复习

最后

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档

[外链图片转存中…(img-3tYe6bi1-1714126365919)]

还有更多面试复习笔记分享如下

[外链图片转存中…(img-gJyIjX1Z-1714126365919)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值