61. Средний возраст мужчин в списке #
Условие задачи:
📌 Дан класс Person
с полями name
, age
, sex
. В main
создаётся список persons
и стрим. Нужно написать код, который найдёт средний возраст всех мужчин из списка.
Код:
List<Person> persons =
Arrays.asList(
new Person(""Alice"", 25, ""female""),
new Person(""Bob"", 30, ""male""),
new Person(""Eve"", 35, ""female""),
new Person(""Jack"", 28, ""male""));
double averageAgeOfMales = persons.stream()
Спойлеры к решению
Подсказки
💡 Используйте
💡 Примените
💡 Вызов
filter(...)
для отбора по sex.equalsIgnoreCase("male")
.💡 Примените
mapToInt(Person::getAge)
, чтобы получить IntStream
.💡 Вызов
average()
вернёт OptionalDouble
, учитывающий отсутствие элементов.Решение
OptionalDouble averageAgeOfMales = persons.stream()
.filter(p -> p.getSex().equalsIgnoreCase("male"))
.mapToInt(Person::getAge)
.average();