Java 流 API 在索引处汇总列表
Java Streams API summing Lists at index
我想知道是否有更有效的方法来对所有树列表求和 - 在同一索引处对它们的值求和。
我问这个问题的原因是,可能使用 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());
感谢任何见解。
这个怎么样:
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();
我想知道是否有更有效的方法来对所有树列表求和 - 在同一索引处对它们的值求和。
我问这个问题的原因是,可能使用 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());
感谢任何见解。
这个怎么样:
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();