getAsDouble()
выдаст NoSuchElementException
, если OptionalDouble
пусто.
Используйте orElse
, чтобы указать значение по умолчанию:
double avgTemperature = temp.stream().filter(o -> o != null).mapToDouble(EnvironmentData::getTemperature).average().orElse(0.0);
Обратите внимание, что если getTemperature()
возвращает ссылочный тип, и он может возвращать null
, вам также следует отфильтровать эти null
значения:
double avgTemperature =
temp.stream()
.filter(o -> o != null && o.getTemperature() != null)
.mapToDouble(EnvironmentData::getTemperature)
.average()
.orElse(0.0);