2016-06-24 7 views
-1

Ich arbeite an einem Programm, wenn Frequenzklasse Wörter in eine verkettete Liste einfügen kann. Wenn ein neues Wort eingefügt wird, fügt es das Wort in die Liste ein. Wenn das Wort in der Liste existiert, erhöhen wir einfach den Wert von "count" für das Wort. Die Häufigkeit eines Wortes hat sich geändert, ich muss das Wort in die richtige Position in der verknüpften Liste verschieben. Wenn zwei Wörter dieselbe Häufigkeit haben, werden sie alphabetisch sortiert.Sortiert und im Vergleich zu Methode

Meine Methode zählt das Wort und setzt die richtige Position, aber wenn die Wörter dieselbe Häufigkeit haben, wird sie nicht alphabetisch sortiert. Kann mir jemand bei der alphabetischen Sortierung helfen, wenn die Wörter die gleiche Häufigkeit haben?

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; 
      } 
     } 

    } 
} 

meine Antwort

(alice,4),(bob,3),(cathy,2),(ethan,1),(frank,1),(david,1), 

aber es soll

(alice,4),(bob,3),(cathy,2),(david,1),(ethan,1),(frank,1), 
+2

Bitte verwenden Sie Code schreiben, die kompiliert wird. "E" ist dort nicht definiert. – Tunaki

+3

Sie verwenden 'this' als den linken Komparator in jeder Situation außer' o.key.compareTo (this.key); 'Verwenden Sie stattdessen' this.key.compareTo (o.key); 'Order matters. – Compass

+0

Ja, wir müssen wissen, was die Art von "Schlüssel" ist, wie die Umsetzung seiner vergleichbaren für eine gute Antwort relevant ist. Compass bringt auch einen guten Punkt. –

Antwort

1

@Compass es in den Kommentaren korrekt muss sein. Statt

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

sollten Sie

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

Was ist der Punkt des Schreibens jemand anderen Kommentar als Antwort? Sie haben nichts von Ihrer Seite hinzugefügt. – YoungHobbit

+0

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

+0

Veröffentlichen Sie eine Antwort mit der Lösung in den Kommentaren, und machen Sie es 'Community Wiki durch Überprüfung der Community Wiki Box'. – YoungHobbit

Verwandte Themen