Просто для улучшения логики компаратора в вашем коде
public class SortByFreq implements Comparator<Word> {
@Override
public int compare(Word w1, Word w2) {
return Integer.compare(w2.getCount(), w1.getCount());
}
}
Ваш общий компаратор должен выглядеть примерно так:
Comparator<Word> comparator = Comparator.comparingInt(Word::getCount).reversed()
.thenComparing(Word::getWord);
, используя который вы можете отсортировать List<Word> wordlist
as:
wordList.sort(comparator);
Если предполагается, что вы используете только пользовательский компаратор, то вы можете обновить компартмент, добавив ту же логику подсчета, что и
static class SortByFreqAndAlphabetically implements Comparator<Word> {
@Override
public int compare(Word w1, Word w2) {
if (w1.getCount() != w2.getCount()) {
return Integer.compare(w2.getCount(), w1.getCount());
} else {
return w1.getWord().compareTo(w2.getWord());
}
}
}
, а затемдалее используйте это для сортировки:
wordList.sort(new SortByFreqAndAlphabetically()); // similar to 'Collections.sort(wordList, new SortByFreqAndAlphabetically())'