如果你經常需要操作多維數組或者對其進行遍歷,那你是不是已經經常陷入了無限多個For循環的痛苦中? 如果是這樣,那不如抽幾分鐘的時間來看看這邊文章。 我相信,看完這篇文章,你會發現使用Lambdas 來簡化多維數組的操作是多么的優雅與方便。
首先,我們來看看通常如果我們需要遍歷一個多維數組,應該使用什么姿勢:
float[][] values = ...
for (int i = 0; i < values.length; i++) {
for (int k = 0; k < values[i].length; k++) {
float value = values[i][k];
// do something with i, k and value
}
}
當然啦,你也可以使用 for-each 來簡化你的代碼。然而通常在循環中你需要 索引index 來進行一些計算,這個時候如果你使用 for-each 是不是傻眼了,我的index呢?在這種情況下 也是有姿勢的:
private void loop(float[][] values, BiConsumer<Integer, Integer> consumer) {
for (int i = 0; i < values.length; i++) {
for (int k = 0; k < values[i].length; k++) {
consumer.accept(i, k);
}
}
}
然后呢,我們可以遍歷數組的index:
float[][] values = ...
loop(values, (i, k) -> {
float value = values[i][k];
// do something with i, k and value
});
這樣做的好處就是你可以讓你的循環代碼跟你的業務邏輯分離開,當然了 你也可以改變loop的邏輯以滿足你的業務需求。