【发布时间】:2018-11-28 17:31:34
【问题描述】:
今天当我使用流平均值编写代码时,我了解到流平均值返回 OptionalDouble 而不是 double。我知道为什么使用OptionalDouble。
当我们调用流平均时还可以返回什么以便我们需要 OptionalDouble?
一个例子将不胜感激。提前致谢。
我的代码如下:
OptionalDouble average = persons.stream()
.mapToInt(person -> person.getAge())
.average();
if(average.isPresent()) {
System.out.println(average.getAsDouble());
}
这里的persons 是Person 类的ArrayList。
【问题讨论】:
-
那么,对于流为空的情况,您的解决方案是什么?
-
是的,我知道,我实际上不需要 DoubleStream。在我的情况下,年龄将永远是整数。
-
@Mukit09 实际上,您要达到的目标是这里的实际问题。只求平均值?如果流是空的怎么办?
-
double average = persons.stream().mapToDouble(person -> person.getAge()).average().orElse(0.0);,但是青峰已经回答了为什么。 -
@Mukit09 是的,确实可以返回 0.0。但那是错误的。 NaN 会是一个更好的选择(毕竟 sum/num = 0/0 = NaN),但他们选择的解决方案是最好的,因此用户可以决定要做什么。
标签: java java-stream optional