本文主要是介绍Java 流过滤器是否足够智能,可以忽略有序流中不必要的项目吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题
假设我有以下内容:
List<Integer> orderedList = Stream.of(5, 4, 0, 2, 1).sorted().toList();
如果我应用如下过滤器
List<Integer> filteredList = orderedList.stream().filter(integer -> integer < 3).toList();
将filter
检查中的所有项目orderedList
,或者鉴于它是有序的,它将在达到第一个错误条件后停止过滤,即,integer >= 3
或者它总是检查所有项目?
如果它检查所有项目,那么在有序列表的情况下,是否有更智能的方法来过滤项目?
解答
在上述的场景中,由于返回一个包含所有与过滤器匹配的元素的列表,filter()
因此适用于流中的所有元素。
如果您想在特定条件为真/假时停止处理,可以使用takeWhile()
,Java 9
:
orderedList.stream().takeWhile(v -> v < 3).forEach(System.out::println);
这篇关于Java 流过滤器是否足够智能,可以忽略有序流中不必要的项目吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!