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 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的逻辑以满足你的业务需求。

你可能感兴趣的:(Java8 新特性, 使用Lambdas简化多维数组的遍历)