Привет всем работающим с потоками, возник такой вопрос. У меня есть лист, который я хочу отсортировать по частоте появления в нем символов:
List<String> frequency = new ArrayList<>();
Collections.addAll(frequency, "gg", "ss", "gg", "boy", "girls", "girls", "gg", "boy", "aa", "aa");
Я написал этот метод:
return words.stream().limit(limit).map(String::toLowerCase)
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
.entrySet().stream()
.map(entry -> new Pair<>(entry.getKey(), entry.getValue()))
.collect(Collectors.toList());
Но ответ уже отображается неверно, строка a полностью потеряна, строка gg - это один элемент, а boys - один элемент
ss=1
gg=2
girls=2
boy=1
И я не знаю, как отсортировать их по частоте появления.
Результат должен быть таким:
gg=3
aa=2
boy=2
girls=2
ss=1
Как это можно улучшить?