如何在java中的lambda表达式中的两个forEach循环之间打印新行



我正试图用java创建一个lambda表达式来运行以下线程。我需要结果如下。

12345
12345
12345
12345

但根据我编写的代码,它是12345123451234512345。我发现这种情况是因为在第二个forEach循环之后缺少println(")语句。因此,我试着写一个新的println(")语句,但它不起作用。如何解决此问题?我应该在哪里写println(")语句?

public class Tb {
public static void main(String[] args) {
// TODO Auto-generated method stub

Runnable r2 = () -> {
IntStream.iterate(1,i-> i+1).limit(5).
forEach(i-> IntStream.iterate(1, j->j+1).limit(5).
forEach(j->{System.out.print(j);}) 




);

};

new Thread(r2).start();
}
}

只需在第二个IntStream之前添加一行。

IntStream.iterate(1, i -> i + 1).limit(5).forEach(i -> {
System.out.println();
IntStream.iterate(1, j -> j + 1).limit(5).forEach(System.out::print);
});

注意:我还根据自己的喜好修改了最后一个foreach

要在每个forEach循环之后添加行,需要在第二个forEach之后添加println,如下所示。

`

public static void main(String[] args) {
// TODO Auto-generated method stub
Runnable r2 = () -> {
IntStream.iterate(1, i -> i + 1).limit(5)
.forEach(i -> {
IntStream.iterate(1, j -> j + 1).limit(5).forEach(j -> {
System.out.print(j);
});
System.out.println();
});
};
new Thread(r2).start();
}

只需将您的语句放在外forEach中的花括号{}中,然后添加一个println语句:

public static void main(String[] args) {
Runnable r2 = () -> {
IntStream.iterate(1,i-> i+1)
.limit(5)
.forEach(i-> {
IntStream.iterate(1, j -> j + 1)
.limit(5)
.forEach(j -> {
System.out.print(j);
});
System.out.println();
});
};
new Thread(r2).start();
}

最新更新