2 回答

TA贡献1877条经验 获得超1个赞
average()返回一个OptionalDouble对象,而不是一个double.
如果您要对结果执行单个操作,例如打印它,则可以使用ifPresent(DoubleConsumer):
grades.stream()
.mapToInt(Integer::intValue)
.average()
.ifPresent(System.out::println);
除此以外,
OptionalDouble optionalAverage = grades.stream()
.mapToInt(Integer::intValue)
.average();
if (optionalAverage.isPresent()) {
double average = optionalAverage.getAsDouble();
System.out.println(average);
}

TA贡献1865条经验 获得超7个赞
您可以orElse用来检索double由OptionalDouble.
这样做您还可以在Optional为空时决定默认值(在本例中我使用了0.0):
System.out.println("" + grades.stream()
.mapToInt(Integer::intValue)
.average()
.orElse(0.0)
);
添加回答
举报