Почение Map из Set
Доброй ночи, всем. Вроде простая задача. Есть список строк. Из него нужно получить Map, где ключ - уникальные значения из списка, значение - количество повторений в списке. Необходимо использовать Stream API. На самом деле там даже чуть сложнее. Я написал первый шаг, но и он у меня не получается.
Доделал до такого
List<String> strings =
List.of("Java", "JaVA", "PHP", "JS", "java", "jS", "Python", "java");
Map<String, Long> result =
strings.stream()
.collect(Collectors.toMap(
Function.identity(),
s -> Collections.frequency(strings, s)));
Ответы (1 шт):
Автор решения: Александр В
→ Ссылка
Исходный код можно немного доработать
- на выходе ожидается Map<String, Long>, а Collections.frequency(strings, s) возвращает int, поэтому надо бы преобразовать в Long
- Подсчёт Collections.frequency(strings, s) происходит для каждого элемента коллекции, поэтому надо задать правило для слияния ключей (k1, k2) -> k1
List<String> strings = Arrays.asList("Java", "JaVA", "PHP", "JS", "java", "jS", "Python", "java");
Map<String, Long> result = strings.stream()
.collect(Collectors.toMap(
Function.identity(),
s -> Long.valueOf(Collections.frequency(strings, s)),
(k1, k2) -> k1
)
);