【发布时间】:2014-02-16 14:41:16
【问题描述】:
如果我根据某个最大值或最小值过滤排序集或映射,Java 8 会盲目检查每个元素的条件,还是使用“排序”进行优化?如果没有,是否有更好的方法仍然使用 Java 8 并行性?
SortedSet<Integer> numbers = getNumbers();
numbers.parallelStream().filter(n -> n <= 100).forEach(...);
P.S.:根据要求澄清: 假设“数字”非常大。如果我们检查每个元素,如果它 sorted 集合上进行 二分搜索,并在 log 时间而不是线性时间 中识别截止值,然后使用一些内部集合功能来在这个截止点创建一个子集。
【问题讨论】:
-
简短的回答是它不会使用项目已排序的事实;原因是它不知道您的过滤器是可以通过这种方式优化的简单比较。对于流,过滤器只是获取一个项目并返回一个
boolean。
标签: java filter java-8 sortedset