Сортировка обектов внутри стрима в отдельные списки которые будут value для мапы

И так, имею метод public Map<Character, List<String>> method (List<String> words) . Нужно сделать стрим, который будет отсеивать все строки в которых последний символ не буква( с этим разобрался), дальше нужно вернуть мапу, где ключем будет последний символ строки, а значение это лист всех строк которые заканчиваються на ключ. Проблема именно с этим


Ответы (1 шт):

Автор решения: Andrew Bystrov
public Map<Character, List<String>> method (List<String> words) {
    return words.stream() // 1
            .filter(s -> { // 2
                char lastChar = s.charAt(s.length() - 1);
                return lastChar >= 'a' && lastChar <= 'z';
            })
            .collect(Collectors.groupingBy(s -> s.charAt(s.length() - 1))); // 3
}
  1. создаем стрим
  2. фильтруем, чтобы последняя буква строки была от a до z (или у вас тут свое условие). Т.е. отсеиваем все строки в которых последний символ не буква
  3. Группируем строчки по последнему символу
→ Ссылка