Task Livecoding Stream Filter Sort Surnames

4. Фильтр по фамилии #

Условие задачи: #

📌 Дан список строк, содержащих полные ФИО (фамилия, имя, отчество).
Нужно:

  • Выделить фамилии
  • Оставить только те, длина которых больше 3 символов
  • Отсортировать результат в алфавитном порядке
  • Вывести список

Код: #

import java.util.*;

public class Main {
    public static void main(String[] args) {
        var fios = List.of(
            "Петров Петр Петрович",
            "Иванов Иван Иванович",
            "Алексеев Алексей Алексеевич",
            "Васильев Василий Васильевич",
            "Сидоров Сидор Сидорович",
            "Николаев Николай Николаевич",
            "Андреев Андрей Андреевич"
        );
    }
}
Спойлеры к решению
Подсказки
💡 Метод split(" ") разобьет строку на части (разделитель — пробел)
💡 full.split(" ")[0] достанет фамилию (первая часть)
💡 Условие surname.length() > 3 проверяет длину фамилии
💡 sorted() сортирует в алфавитном порядке
💡 toList() собирает поток в итоговый список
Решение
List<String> out = fios.stream()
                .map(fio -> fio.split(" ")[0])             // берём фамилию
                .filter(surname -> surname.length() > 3)   // фильтруем
                .sorted()                                  // сортируем
                .toList();