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),
Bitte verwenden Sie Code schreiben, die kompiliert wird. "E" ist dort nicht definiert. – Tunaki
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
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. –