Java8 新特性, 使用Lambdas簡化多維數組的遍歷

如果你經常需要操作多維數組或者對其進行遍歷,那你是不是已經經常陷入了無限多個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的邏輯以滿足你的業務需求。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容