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,哪一个都有可能返回了
今天的文章find 详解_findfirstfile函数[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/75551.html