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流的相同理解——这大概是它的目标——而没有产生乱七八糟的输出。有点讽刺的是,你说它的打印方式很复杂,并发布了一个这样格式的代码示例…:)你说得对!当你发表评论时,我正在修改它。有点讽刺的是,你说它的打印方式很复杂,并发布了一个这样格式的代码示例…:)你说得对!你发表评论时,我正在修改它。