我正在研究一个程序,当Frequency类可以将单词插入到链表中时。插入新单词时,会将单词添加到列表中。如果列表中存在该单词,我们只需递增该单词的“count”值。单词的频率发生了变化,我必须将单词移动到链表中的正确位置。如果两个单词的频率相同,则按字母顺序排序。
我的方法计算单词并放置正确的位置但是当单词具有相同的频率时,它不按字母顺序排序。如果单词具有相同的频率,有人可以按字母顺序排序吗?
public class Node implements Comparable<Node> {
private E key;
private int count;
public int compareTo(Node o) {
// words have same frequency, they are sorted alphabetically
if (this.count == o.count) {
return o.key.compareTo(this.key);
} else {
// by number of word
if (this.count > o.count) {
return 1;
}
else {
return -1;
}
}
}
}
我的回答
(alice,4),(bob,3),(cathy,2),(ethan,1),(frank,1),(david,1),
但它应该是
(alice,4),(bob,3),(cathy,2),(david,1),(ethan,1),(frank,1),
答案 0 :(得分:1)
@Compass在评论中更正了。而不是
return o.key.compareTo(this.key);
你应该使用
return this.key.compareTo(o.key);