Найти средний возраст мужчин в списке

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();