通过java流计算二维数组中的邻居

我有一个像这样的二维数组:


0,1,1,1,0

0,1,0,1,1

1,0,1,0,1

1,1,1,0,0

0,0,1,0,0

当数字为1时,我想计算相邻单元格的总和。


前任。对于 i=1,j=1,总和为 4。


循环计数不是问题,但是是否可以通过 java 流进行计数(当然是 ArrayList 而不是 tab[][])?


private void countAlive(Cell[][] cell) {


        for (int i = 0; i < cell.length; i++) {

            for (int j = 0; j < cell[0].length; j++) {

                cell[i][j].setAlive(0);

                if (cell[i - 1][j - 1].cellAlive())

                    cell[i][j].increaseAlive();

                if (cell[i - 1][j].cellAlive())

                    cell[i][j].increaseAlive();

                if (cell[i - 1][j + 1].cellAlive())

                    cell[i][j].increaseAlive();

                if (cell[i][j - 1].cellAlive())

                    cell[i][j].increaseAlive();

                if (cell[i][j + 1].cellAlive())

                    cell[i][j].increaseAlive();

                if (cell[i + 1][j - 1].cellAlive())

                    cell[i][j].increaseAlive();

                if (cell[i + 1][j].cellAlive())

                    cell[i][j].increaseAlive();

                if (cell[i + 1][j + 1].cellAlive())

                    cell[i][j].increaseAlive();

            }

        }

    }


慕姐4208626
浏览 184回答 2
2回答

犯罪嫌疑人X

流非常适合抽象迭代完成的方式并专注于您想要在对象上/与对象执行的实际过程。但是,当迭代顺序无关紧要时,这很有用。在这种情况下,它确实:不是订单本身,而是每个步骤中对象的索引,本质上是它与 2D 数组的其他对象相比的相对位置。当您流式传输该数组 Cell[][] 时,您一次得到一个 Cell 对象,没有它的索引。Arrays(array2DofCells).stream().flatMap(x ->Arrays.stream(x)).forEach( cell -> { //What would you do here without the indexes? } )一种方法是让每个 Cell 知道它的索引,以便您可以调用cell.getRowIndex()并cell.getColumnIndex()执行您想要在父 2D 数组上执行的过程。但是,正如评论中所指出的,除非有非常具体的原因,否则这似乎是避免流的情况。对此的指针是,您开始在 .forEach() 的范围内想知道如何获取流有意隐藏的信息。

慕虎7371278

我想你可能正在寻找类似的东西:var cells = ["01110","01011","10101","11100","00100",];for (var i = 0; i < cells.length; i++) {for (var j = 0; j < cells[i].length; j++) {if (cells[i][j - 1] == "1") {cellAlive();}if (cells[i][j + 1] == "1") {cellAlive();}if (cells[i - 1][j] == "1") {cellAlive();}if (cells[i + 1][j] == "1") {cellAlive();}}}如果这不是您要查找的内容,您能否更具体一些?希望这可以帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java