【发布时间】:2015-09-14 12:57:32
【问题描述】:
我正在寻找从List<Double> 创建DoubleStream(用于使用总和、平均值等)的最优雅的方法。目前我有这样的代码:
List<Double> doubles = getListOfDoubles();
double sum = doubles.stream()
.mapToDouble(d -> d)
.sum();
也许有人可以建议更短的方法?
【问题讨论】:
-
我的意思是,我们重载了 Arrays.toStream(...) 可以返回不同的 Streams,那么为什么 Collections 没有类似的东西呢?
-
Arrays哪里有这样的东西? -
@RealSkeptic Arrays javadoc
static DoubleStream stream(double[] array) Returns a sequential DoubleStream with the specified array as its source.IntStream、LongStream 类似抱歉格式化 -
但这需要
double(原语)数组,而不是Double数组。这就是与Collections的区别。 -
@Marco13:
mapToDouble是拆箱方法。这是在 genericStream上提供此类功能的唯一方法。您必须指定生成三个备选方案(IntStream、LongStream或DoubleStream)中的哪一个,并且必须指定一个函数,该函数可以将运行时流中未知的元素类型转换为目标类型.这正是mapToDouble(ToDoubleFunction)所提供的。
标签: java collections java-8 java-stream