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