Посмотрите на использование TreeSet
над HashSet
. TreeSet упорядочит элементы, используя их естественный порядок. Вы можете передать Comparator
в конструктор TreeSet
, если вам нужен другой порядок сортировки.
Вы должны заметить, что ваш текущий код немного неэффективен в том смысле, что для получения счетчика частоты приходится перебирать весь список для каждого слова. Вам лучше обработать список заранее, посчитать частоту и сохранить ее на карте. Например:
Map<String, Long> frequency = new TreeMap<>();
for (String word : list) {
frequency.put(word, frequency.getOrDefault(word, 0L) + 1);
}
for (String word : frequency.keySet()) {
System.out.println(word + ": " + frequency.get(word));
}
Вы также можете сделать это с помощью потоков следующим образом.
list.stream()
.collect(Collectors.groupingBy(Function.identity(), TreeMap::new, Collectors.counting()))
.forEach((k, v) -> System.out.println(k + ": " + v));