【发布时间】:2016-08-04 16:28:41
【问题描述】:
据我所知,如果我有一个带有两个过滤器的流,它们将在字节码中与 && 组合。
例如
IntStream.range(1,10)
.filter(i -> i % 2 == 0)
.filter(i -> i % 3 == 0)
.sum();
应该是 i % 2 == 0 && i % 3 == 0。
peek 会影响这个吗?
如果您在第一个文件管理器之后偷看,您会得到 2468,如果您在第二个文件管理器之后偷看,您只会得到 6(当然)。
但是如果你同时看两个地方
IntStream.range(1,10)
.filter(integer -> integer % 2 == 0)
.peek(i-> System.out.print(i))
.filter(integer -> integer % 3 == 0)
.peek(i-> System.out.print(i))
.sum();
你得到 24668。
我的假设是,这一定意味着操作在某种程度上是由于 peek 调用而分离的。类似的东西
if(i%2==0)
peek
if(i%3==0)
这是真的吗?如果是的话,它会影响性能吗(我认为不会)。
【问题讨论】:
标签: java performance java-8 java-stream bytecode