Java流-查看和跳过
我正在准备考试,我对皮克感到困惑。演示代码:Java流-查看和跳过,java,java-stream,Java,Java Stream,我正在准备考试,我对皮克感到困惑。演示代码: Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9) .peek(x -> System.out.print("A" + x)) .skip(6) .peek(x -> System.out.print("B" + x)) .forEach(x -> System.out.println("C" + x)); 输出: A1A2A3A4A5A6A7B7C7 A8B8C8 A9B9C
Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9)
.peek(x -> System.out.print("A" + x))
.skip(6)
.peek(x -> System.out.print("B" + x))
.forEach(x -> System.out.println("C" + x));
输出:
A1A2A3A4A5A6A7B7C7
A8B8C8
A9B9C9
有人能解释一下这里发生了什么吗?我只知道
skip(6)
跳过前6个元素,peek将在给定时刻打印流的值。我认为这个示例是不必要的迟钝
这实际上是一个完全相同的问题,但我相信输出会让事情变得更加清楚。它在流中为每个项目打印一行
Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9)
.peek(x -> System.out.println()) //always prints
.peek(x -> System.out.print("A" + x + " ")) //always prints
.skip(6) //"conditional"
.forEach(x -> System.out.print("B" + x)); //sometimes prints
输出
A1
A2
A3
A4
A5
A6
A7 B7
A8 B8
A9 B9
整数1-6只在skip
操作将它们放在地板上时进行。他们不允许到达B
。skip
的作用就像一个屏障
剩下的项目可以通过
跳过的“障碍”并到达B
我认为这个例子是不必要的迟钝
这实际上是一个完全相同的问题,但我相信输出会让事情变得更加清楚。它在流中为每个项目打印一行
Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9)
.peek(x -> System.out.println()) //always prints
.peek(x -> System.out.print("A" + x + " ")) //always prints
.skip(6) //"conditional"
.forEach(x -> System.out.print("B" + x)); //sometimes prints
输出
A1
A2
A3
A4
A5
A6
A7 B7
A8 B8
A9 B9
整数1-6只在skip
操作将它们放在地板上时进行。他们不允许到达B
。skip
的作用就像一个屏障
剩下的项目可以通过跳过
的“屏障”,并按照您打印它的方式进入B
。嗯,在第一个print语句的开头放一个换行符更容易看到
流(1,2,3,4,5,6).peek(x->System.out.print(“\nA”+x)).skip(
1) .peek(x->System.out.print(“B”+x)).forEach(
x->System.out.print(“C”+x));
产生
A1
A2B2C2
A3B3C3
A4B4C4
A5B5C5
A6B6C6
显然是个人喜好。它只显示了第一个自己打印的,其余的按顺序打印。您打印它的方式有点复杂。嗯,在第一个print语句的开头放一个换行符更容易看到
流(1,2,3,4,5,6).peek(x->System.out.print(“\nA”+x)).skip(
1) .peek(x->System.out.print(“B”+x)).forEach(
x->System.out.print(“C”+x));
产生
A1
A2B2C2
A3B3C3
A4B4C4
A5B5C5
A6B6C6
显然是个人喜好。它只显示了第一个自己打印的,其余的按顺序打印。阅读这个问题的答案:顺便说一句,无论是谁设置了这个选项,他们对print
和println
s的选择完全不合逻辑,这都是令人难以置信的卑鄙。如果每个语句都是println
,那么这就更容易推理了。阅读这个问题的答案:顺便说一句,无论是谁设置了这个选项,他们对print
和println
的选择完全不合逻辑,这都是非常卑鄙的。如果每一句话都是println
,这就更容易推理了。我认为考试的重点是部分“迟钝”,以挑战参加考试的人,更好地衡量他们是否理解所发生的事情。@Andreas故意混淆或欺骗学生的试题是糟糕的试题。如果那是目标,那就太愚蠢了。我喜欢给提问者更多的信任,并且喜欢相信他们偶然提出了一个糟糕的问题。我认为这个例子评估了对Java streams的相同理解——这大概是它的目标评估——而没有产生乱七八糟的输出。我认为考试的目的是部分“迟钝”,以挑战参加考试的人,“为了更好地衡量他们是否理解发生了什么。”安德烈亚斯故意混淆或欺骗学生的试题是糟糕的试题。如果那是目标,那就太愚蠢了。我喜欢给提问者更多的信任,并且喜欢相信他们偶然提出了一个糟糕的问题。我认为这个例子评估了对Java流的相同理解——这大概是它的目标——而没有产生乱七八糟的输出。有点讽刺的是,你说它的打印方式很复杂,并发布了一个这样格式的代码示例…:)你说得对!当你发表评论时,我正在修改它。有点讽刺的是,你说它的打印方式很复杂,并发布了一个这样格式的代码示例…:)你说得对!你发表评论时,我正在修改它。