Loops Java 8流嵌套for循环
如何使用java流执行以下嵌套循环Loops Java 8流嵌套for循环,loops,lambda,java-8,java-stream,Loops,Lambda,Java 8,Java Stream,如何使用java流执行以下嵌套循环 for (int x = 0; x < 5; x++) { for (int y = 0; y < 5; y++) { System.out.println(x + ", " + y); } } 你是说像这样的事吗 IntStream.range(0, 5) .boxed() .flatMap(x -> IntStream.range(0, 5)
for (int x = 0; x < 5; x++) {
for (int y = 0; y < 5; y++) {
System.out.println(x + ", " + y);
}
}
你是说像这样的事吗
IntStream.range(0, 5)
.boxed()
.flatMap(x -> IntStream.range(0, 5)
.mapToObj(y -> new int[] { x, y }))
.map(xy -> xy[0] + ", " + xy[1])
.forEach(System.out::println);
更新
如果用实际对象替换数组会更好
IntStream.range(0, 5)
.boxed()
.flatMap(x -> IntStream.range(0, 5)
.mapToObj(y -> new Coord(x, y)))
.forEach(System.out::println);
public-final-class-Coord{
私人最终int x;
私人终审法院;
公共合作社(国际x、国际y){
这个.x=x;
这个。y=y;
}
公共int getX(){
归还这个.x;
}
公共int getY(){
把这个还给我;
}
@凌驾
公共字符串toString(){
返回此.x+“,”+此.y;
}
}
使用流有什么理由吗?您不必仅仅因为可以就将每个循环迁移到流操作。我更喜欢您的版本而不是使用flatMap。但是我更喜欢两个循环而不是任何流版本。是的,就像那样。我不知道如何使用flatMap()创建元组x,太糟糕了,在Java8中,您无法将逗号之类的配对函数提升到一对列表单体中。
IntStream.range(0, 5)
.boxed()
.flatMap(x -> IntStream.range(0, 5)
.mapToObj(y -> new Coord(x, y)))
.forEach(System.out::println);