14. Найти средний возраст мужчин в списке
Условие задачи:
📌 Дан класс 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()
📌 Пример 1:
Вход:persons = [("Alice", 25, "female"), ("Bob", 30, "male"), ("Eve", 35, "female"), ("Jack", 28, "male")]
Выход:29.0
📌 Пример 2:
Вход:persons = [("Bob", 20, "male"), ("Tom", 40, "male")]
Выход:30.0
📌 Пример 3:
Вход:persons = [("Alice", 25, "female"), ("Eve", 35, "female")]
Выход:OptionalDouble.empty
Спойлеры к решению
Подсказки
💡 Используйте
💡 Примените
💡 Вызов
filter(...) для отбора по sex.equalsIgnoreCase("male").💡 Примените
mapToInt(Person::getAge), чтобы получить IntStream.💡 Вызов
average() вернёт OptionalDouble, учитывающий отсутствие элементов.Решение
OptionalDouble averageAgeOfMales = persons.stream()
.filter(p -> p.getSex().equalsIgnoreCase("male"))
.mapToInt(Person::getAge)
.average();