提高(行)(列)迭代效率 - Java

Improve (Row)(Col) Iteration Efficiency - Java

我目前正在为我正在处理的应用程序写一篇很长的文章 class。 有两行代码不断重复,但我想不出更快的方法!

行是:

for (int row = 0; row < 8; row++)
    for (int col = 0; col < 8; col++)
        // Do Something

对于这样一个简单的"double loop"迭代,一定有一些方法可以减少这两行出现的次数,或者使代码更简单。

谁能减少这个的字符数?

编辑:

欲了解更多信息,

因为代码经常重复,我想减少字符数或使用两个 for 循环的替代方法。

代码使用如下(举例):

for (int row = 0; row < 8; row++)
    for (int col = 0; col < 8; col++)
        setVal();   

for (int row = 0; row < 8; row++)
    for (int col = 0; col < 8; col++)
        getVal(); 

嗯,有这个公式。

    for (int i = 0; i < 64; i++) {
        int row = i / 8;
        int col = i % 8;
        // do something
    }

虽然我不认为那是你要找的。

我不知道嵌套循环有什么问题,但是您可以在 java 8 中使用 lambda 将其缩短一点。

编写表示嵌套循环的通用方法。

private static void loops(BiConsumer<Integer, Integer> biConsumer) {
    for (int row = 0; row < 8; row++)
        for (int col = 0; col < 8; col++)
            biConsumer.accept(row, col);
}

然后你可以这样称呼它:

loops((row, col) -> System.out.println("The cell is (" + row + ", " + col + ")"));

一般可以这样写:

loops((row, col) -> {
        // Put your code in here.
});

假设您希望 setVal() 和 getVal() 了解行和列,您可以执行如下操作:

void matrixExecute(MatrixExecutor executor) {
    for (int row = 0; row < 8; row++) {
        for (int col = 0; col < 8; col++) {
            executor.execute(col, row);
        }
    }
}
private interface MatrixExecutor {
    void execute(int col, int row);
}

要内联使用此工具:

matrixExecute(new MatrixExecutor() {
    @Override
    public void execute(int col, int row) {
        System.out.println("col:" + col + "row:" + row);
        }
    });

虽然这仍然很冗长,但是当您转到 Java 8 和 lamda 表达式时,它非常好:

matrixExecute((col,row) -> { System.out.println("col:"+col+"row:"+row);});

请注意,需要确保您了解闭包。