Java元素和2个数组

问题描述 投票:6回答:2

鉴于我有两个Java数组,AB我想添加元素,元素方面,这导致一个sum数组。使用循环隐式执行此操作很容易,但我想知道是否有更优雅的解决方案,可能使用guava集合或构建java utils。或者也许是一种python-ish方式,通过列表推导很容易。

例:

A   = [2,6,1,4]
B   = [2,1,4,4]
sum = [4,7,5,8]
java arrays elements addition
2个回答
19
投票

你可以这样做:

private void sum() {
    int a[] = {2, 6, 1, 4};
    int b[] = {2, 1, 4, 4};

    int result[] = new int[a.length];
    Arrays.setAll(result, i -> a[i] + b[i]);
}

这将首先创建正确大小的int result[]

然后使用昨天发布的Java 8,简单的部分来了:

  • 你可以做一个Arrays.setAll(int[] array, IntUnaryOperator);
  • 作为IntUnaryOperator,您可以创建一个lambda映射索引到结果,在这里我们选择将i映射到a[i] + b[i],这恰好产生了我们的总和。
  • 对于非常大的阵列,我们甚至可以使用Arrays.parallelSetAll

1
投票

您可以在数组上使用java8流和操作,如下所示:

//in this example a[] and b[] are same length
int[] a = ...
int[] b = ...
int[] result = new int[a.length];
IntStream.range(0, a.length)
     .forEach(i -> result[i] = a[i] + b[i]);

The answer in java8

© www.soinside.com 2019 - 2024. All rights reserved.