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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容