Java Streams API суммирование списков в индексе
Я хотел бы знать, существует ли более эффективный способ суммирования всех древовидных списков - суммирование их значений в одном индексе.
Причина, по которой я спрашиваю его, потому что, вероятно, используя Streams API, можно сделать его более универсальным для любого количества списков.
List<Double> listA = getListA();
List<Double> listB = getListB();
List<Double> listC = getListC();
int listsSize = listA.size();
List<?> collect = IntStream.range(0, listsSize)
.mapToObj(i -> listA.get(i) + listB.get(i) + list(C).get(i))
.collect(toList());
Спасибо за любое понимание.
1 ответ:
Как насчет этого:
List<List<Double>> lists = ...; // ensure all lists are same size, and get size int[] sizes = lists.stream().mapToInt(List::size).distinct().toArray(); if (sizes.length != 1) throw ... int size = sizes[0]; double[] sums = IntStream.range(0, size) .mapToDouble(i -> lists.stream().mapToDouble(list -> list.get(i)).sum()) .toArray();
Comments