2016-06-24 16 views
-1

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), 
+2

を使用する必要がありますコンパイルするコードを投稿してください。 'E'はそこに定義されていません。 – Tunaki

+3

'o.key.compareTo(this.key);を除くすべての状況で' this'を左コンパレータとして使います。代わりに 'this.key.compareTo(o.key);を使います。 – Compass

+0

ええ、私たちは、 "キー"のタイプが何であるかを知る必要があります。それは、その比較の実装が良い答えに関連しているからです。コンパスもまた良い点をもたらします。 –

答えて

1

ことになっているコメントで、それは正しいです。代わりに

return o.key.compareTo(this.key); 

のあなたは

return this.key.compareTo(o.key); 
+0

誰か他の人のコメントを答えとして書くのは何ですか?あなたはあなたの側から何も追加していません。 – YoungHobbit

+0

@YoungHobbit http://meta.stackoverflow.com/questions/251597/question-with-no-answers-but-issue-solved-in-the-comments – lucasvw

+0

コメントに解答を投稿し、それは 'コミュニティウィキボックスをチェックしてコミュニティウィキ'です。 – YoungHobbit

関連する問題