我正在为我正在处理的应用程序编写一个长类。 有两行代码不断重复,但我想不出更快的方法!
这些行是:
for (int row = 0; row < 8; row++)
for (int col = 0; col < 8; col++)
// Do Something
对于这样一个简单的&#34;双循环&#34;迭代,必须有一些方法可以减少这两行出现的次数,或者使代码更简单。
任何人都可以减少这个字符数吗?
编辑:
欲了解更多信息,
因为代码经常重复,我要么减少字符数,要么使用两个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();
答案 0 :(得分:1)
我不知道嵌套循环有什么问题,但你可以使用lambdas在java 8中缩短它。
编写表示嵌套循环的通用方法。
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.
});
答案 1 :(得分:1)
假设您希望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);});
请注意,需要确保了解闭包。
答案 2 :(得分:0)
嗯,有这个表述。
for (int i = 0; i < 64; i++) {
int row = i / 8;
int col = i % 8;
// do something
}
虽然我认为这不是你想要的。