【发布时间】:2019-05-03 06:41:46
【问题描述】:
我的 Driver 类中有一个 ArrayList<Word> 需要排序。我的 Word 类有两个属性:
public class Word {
String word;
int count;
}
在我的 Driver 类中,它读取 .txt 文件的每个 word 并将其添加到 ArrayList。我需要先按计数对这个 ArrayList 进行排序,对于具有相同 count 的单词,我需要按字母顺序对它们进行排序。我可以制作自定义 Comparator 类按计数排序:
public class SortByFreq implements Comparator<Word>{
@Override
public int compare(Word w1, Word w2) {
return -(w1.count - w2.count); // Sort as descending order
}
}
而且它有效。但是现在我被困在如何保持这个排序的 ArrayList 并再进行一次排序。因为通常使用 Collections.sort() 会影响整个 ArrayList 并覆盖,而不影响其中的一部分。任何帮助将不胜感激!
编辑
我在我的 Driver 类中对我的 ArrayList 进行排序:
Collections.sort(wordList, new SortByFreq());
【问题讨论】:
标签: java sorting arraylist collections comparator