Given that I have two arrays in Java, A
and B
I want to add the elements, element-wise, which results in a sum array. Doing this implicitly with a loop is easy but I was wondering if there was a more elegant solution, perhaps with the guava collections or build in java utils. Or perhaps a python-ish way which makes is easy with list comprehensions.
Example:
A = [2,6,1,4]
B = [2,1,4,4]
sum = [4,7,5,8]
You cannot use the plus operator to add two arrays in Java e.g. if you have two int arrays a1 and a2, doing a3 = a1 + a2 will give a compile-time error. The only way to add two arrays in Java is to iterate over them and add individual elements and store them into a new array.
The idea is to start traversing both the array simultaneously from the end until we reach the 0th index of either of the array. While traversing each elements of array, add element of both the array and carry from the previous sum. Now store the unit digit of the sum and forward carry for the next index sum.
In order to find the sum of all elements in an array, we can simply iterate the array and add each element to a sum accumulating variable.
The concat() method is used to merge two or more arrays. This method does not change the existing arrays, but instead returns a new array.
You can do it like this:
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]);
}
This will first create int result[]
of the correct size.
Then with Java 8, released yesterday, the easy part comes:
Arrays.setAll(int[] array, IntUnaryOperator);
IntUnaryOperator
you can create a lambda mapping the index to the result, in here we choose to map i
to a[i] + b[i]
, which exactly produces our sum.Arrays.parallelSetAll
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With