findAny()详解

Java8 的Stream语法可以说是声明式bai的代码了,所du以正如名字所说,是找到任何一个就行zhi
比如:有一个Integer的集dao合[1, 3, 5, 7]
e.g 1
List<Integer> list = Arrays.asList(1, 3, 5, 7);
Optional<Integer> any = list.stream().findAny();
这样出来的话,这个any肯定就是1了,因为此时stream是有顺序的,相当于一个list,把list中的数字按顺序去执行findany,所以第一个是1, 既然找到了1,因此直接返回1
e.g 2
List<Integer> list = Arrays.asList(1, 3, 5, 7);
Optional<Integer> any = list.stream().filter(i -> i>4).findAny();
这样的话,这个any肯定就是5了,因为此时根据filter过滤了一把,把大于4的数字留下来了,因此在执行findany之前,此时stream中只有5和7了,所以按照顺序,取到第一个是5,找了一个,因此直接返回5
e.g 3
List<Integer> list = Arrays.asList(1, 3, 5, 7);
Optional<Integer> any = list.stream().filter(i -> i>9).findAny();
这样的话,这个any就是Optional.empty,是一个空的了,因此根据filter过滤完了之后,没有大于9的,此时stream中没有元素,因此findany没有找到任何一个,所以返回空Optional
e.g 4
List<Integer> list = Arrays.asList(1, 3, 5, 7);
Optional<Integer> any = list.stream().parallel().findAny();
这个例子和e.g 1比较像,此时stream中加了parallel()方法,所以这个流是一个并行流,是无序的,那这个findany就无法确定到底返回谁了,1,3,5,7,哪一个都有可能返回了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值