为什么stream average()方法返回OptionalDouble而不是double?

时间:2018-11-28 17:31:35

标签: java java-stream optional

今天,当我使用流平均值编写代码时,我知道流平均值返回OptionalDouble而不是double。我知道为什么使用OptionalDouble

当我们调用流平均以使我们需要OptionalDouble时还能返回什么?

一个例子将不胜感激。提前致谢。

我的代码如下:

OptionalDouble average = persons.stream()
            .mapToInt(person -> person.getAge())
            .average();
if(average.isPresent()) {
    System.out.println(average.getAsDouble());
}

personsArrayList类的Person

1 个答案:

答案 0 :(得分:9)

返回

OptionalDouble仅仅是因为流可能为空,这是真正的一种好方法,可以让 user 决定在中做什么“无值” 情况,即您可以为orElse提供一个替代值,通过ifPresent执行另一操作,通过orElseThrow引发异常,等等。