Java 8 streams adding values from two or more lists

java, java-8

Solution

That one isn't really doable the way you're hoping. The closest you could get would probably be

IntStream.range(0, voterA.size())
    .mapToObj(i -> voterA.get(i) + voterB.get(i))
    .collect(toList());

...but there's no "zip" operation on streams, largely because two different streams can have backing spliterators that split at different points, so you can't line them up properly.

Problem

I am trying to get into Java 8 and get my head around streams and lambdas to solve various problems and got stuck on this specific one which I normally use a forEach and store the values in a Map to solve. How would you write the code to get the expected list using the new features in Java 8 ? ``` List<Integer> voterA = Arrays.asList(1,2,3,4,5); List<Integer> voterB = Arrays.asList(1,2,3,4,5); List<List<Integer>> votes = Arrays.asList(voterA, voterB); // expected list = (2,4,6,8,10) List<Integer> sumVotes = ... ```

Original source

Related problems