Фильтрация и группировка имён

12. Фильтрация и группировка имён

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

     * Есть список строк с именами пользователей. Необходимо:
     * Выбрать имена, начинающиеся с буквы «А».
     * Сгруппировать имена по длине.
     * Вернуть результат в виде Map<Integer, List<String>>, где ключ — длина имени, значение — список имен такой длины.
     *
     * Пример входных данных:
     * ["Анна", "Александр", "Андрей", "Антон", "Борис", "Богдан", "Мария", "Максим", "Артём"]
     *
     * Ожидаемый результат:
     * {4=[Анна], 5=[Антон, Артём], 6=[Андрей], 9=[Александр]}
     */
    public static Map<Integer, List<String>> processNames(List<String> names) {
        return null;
    }
}

Код:

public class Main {

    public static void main(String[] args) {
        List<String> names = List.of("Анна", "Александр", "Андрей", "Антон", "Борис", "Богдан", "Мария", "Максим", "Артём");
        System.out.println(processNames(names));
    }
Спойлеры к решению
Подсказки
💡 Используйте stream().
💡 Отбор по первой букве — через filter(...).
💡 Группировка выполняется с помощью Collectors.groupingBy(...).
💡 Длина строки берётся через String::length.
Решение
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public static Map<Integer, List<String>> processNames(List<String> names) {
    return names.stream()
            .filter(name -> name.startsWith("А"))
            .collect(Collectors.groupingBy(String::length));
}