Frequencyクラスが単語をリンクリストに挿入できるときに、私はプログラムを作成しています。新しい単語が挿入されると、その単語がリストに追加されます。単語がリストに存在する場合、単語の "count"の値を単純にインクリメントします。単語の頻度が変わった、リンクされたリストの正しい位置に単語を移動する必要があります。 2つの単語の頻度が同じ場合、アルファベット順にソートされます。メソッドとソートして比較する
私の方法は単語を数えて正しい位置を入れますが、単語の頻度が同じ場合はアルファベット順にソートされません。言葉の頻度が同じであれば誰かがアルファベット順でソートすることができますか?
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),
@Compass
(alice,4),(bob,3),(cathy,2),(david,1),(ethan,1),(frank,1),
を使用する必要がありますコンパイルするコードを投稿してください。 'E'はそこに定義されていません。 – Tunaki
'o.key.compareTo(this.key);を除くすべての状況で' this'を左コンパレータとして使います。代わりに 'this.key.compareTo(o.key);を使います。 – Compass
ええ、私たちは、 "キー"のタイプが何であるかを知る必要があります。それは、その比較の実装が良い答えに関連しているからです。コンパスもまた良い点をもたらします。 –