Есть список строк:
List<String> s = Arrays.asList("a", "a", "a", "b", "c");
Чтобы найти самый часто встречающуюся букву с помощью стирима:
// получим количество повторений по каждой букве (a = 3, b = 1, c = 1)
Map<String, Long> map= s.stream()
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
// Из этого списка уже получаем букву с самым большим количеством повторений (это буква "а")
Optional<String> mostCommon = map.entrySet().stream()
.max(Map.Entry.comparingByValue())
.map(Map.Entry::getKey);
А как получить несколько букв , у которых будет
равно максимальное количество повторений:
// a = 3 и b = 3
List<String> s = Arrays.asList("a", "a", "a", "b", "b", "b", "b", "c");
Пытался наподобие этого, но не выходит:
Set<Srring> mostWidelyUsed = map.entrySet().stream()
.map(v -> Collections.max(v, Map.Entry.comparingByValue()))
.collect(Collectors.toSet());