This question already has answers here:
How do I get an IntStream from a List<Integer>?
(2个答案)
5年前关闭。
我正在寻找从
也许有人可以建议一个更短的方法?
通过使用
可以针对
请注意,将
(2个答案)
5年前关闭。
我正在寻找从
DoubleStream
创建List<Double>
(用于使用求和,平均值等)的最优雅的方法。目前,我有这样的代码:List<Double> doubles = getListOfDoubles();
double sum = doubles.stream()
.mapToDouble(d -> d)
.sum();
也许有人可以建议一个更短的方法?
最佳答案
从Stream
获取统计信息的最佳方法是使用...SummaryStatistics
类。对于Stream<Double>
,这是 DoubleSummaryStatistics
:
List<Double> doubles = getListOfDoubles();
DoubleSummaryStatistics stats = doubles.stream().collect(Collectors.summarizingDouble(Double::doubleValue));
System.out.println(stats.getAverage());
System.out.println(stats.getSum());
通过使用
summarizingDouble
收集器收集流来获得它。该收集器将ToDoubleFunction
作为参数:这是一个应返回double
进行分析的函数。可以针对
Integer
, Long
和 Double
值获得此类统计信息。请注意,将
Collection<Double>
转换为DoubleStream
的一般情况可以通过您已有的代码来完成:List<Double> doubles = getListOfDoubles();
DoubleStream stream = doubles.stream().mapToDouble(Double::doubleValue);
07-26 03:02