Loops Java 8流嵌套for循环

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)

如何使用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)
                                .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);