gpt4 book ai didi

java - 流 peek() 方法行为

转载 作者:行者123 更新时间:2023-12-03 18:42:19 25 4
gpt4 key购买 nike

List<Integer> nums = Arrays.asList(1,2,3,4,5,6);
long result = nums
.stream()
.peek(System.out::print)
.map(n->n*n)
.filter(n->n>20)
.peek(System.out::print)
.count();
System.out.println(result);

为什么它不打印 12345625362 而不是 1234525362

最佳答案

如果我们在 peek 中的 println 中添加空格,我们可以更好地理解为什么会发生这种情况:

long result2 = nums.stream()
.peek(e -> System.out.print(e + " "))
.map(n->n*n)
.filter(n->n>20)
.peek(e -> System.out.print(e + " "))
.count();

这个输出:

1 2 3 4 5 25 6 36 

如您所见,1 通过并打印出来,但未通过过滤器,因此未打印正方形。 234 也是如此。然后 5 通过并打印出来。它通过了过滤器,因此 25 被打印出来。到目前为止我们有:

1 2 3 4 5 25

然后六个以类似的方式通过,我们剩下

1 2 3 4 5 25 6 36 

然后打印 System.out.println(result);。由于最后一次调用是 print 而不是 println,它被打印在同一行上,因此附加了 2。如果我们收回这产生的空间:

12345256362

结果是什么

关于java - 流 peek() 方法行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com