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());


Спасибо за любое понимание.

667   1  

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

    Ничего не найдено.