По сути, у меня ArrayList<ArrayList<Integer>> = [[-1,-4], [3,2], [0,-4], [-3,2]
. Я хочу использовать потоки для прохождения каждого ArrayList и добавления элементов вместе, например: [[-5],[5],[-4], [-1]]
. Затем я хочу преобразовать его в массив int[] и получить следующее: [-5, 5, -4, -1]
.
У меня есть это:
ArrayList<ArrayList<Integer>> outerNums = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> innerNums0 = new ArrayList<>();
ArrayList<Integer> innerNums1 = new ArrayList<>();
ArrayList<Integer> innerNums2 = new ArrayList<>();
ArrayList<Integer> innerNums3 = new ArrayList<>();
innerNums0.add(-1);
innerNums0.add(-4);
innerNums1.add(3);
innerNums1.add(2);
innerNums2.add(0);
innerNums2.add(-4);
innerNums3.add(-3);
innerNums3.add(2);
//
outerNums.add(innerNums0);
outerNums.add(innerNums1);
outerNums.add(innerNums2);
outerNums.add(innerNums3);
System.out.println(res(outerNums));
}
public static int[] res(ArrayList<ArrayList<Integer>> innerNums) {
System.out.println(innerNums);
//Need to use both map and reduce
int[] result = innerNums.stream().map().reduce(); //not sure what to do here.
return result;
}
Да это оно. Благодарю вас!
@AetherRemnant Примечание: вы можете уменьшить это, просто используя
mapToInt
напрямую вместо использования методаmap
...int[] result = list.stream().mapToInt(innerList -> innerList.stream().reduce(0, Integer::sum)).toArray();