Wie vergleichen generischen Knoten in einer verketteten Liste mit Vergleichbar?
Ich die Umsetzung eine sortierte Liste mit verknüpften Listen. Meine Knoten-Klasse sieht wie folgt aus
public class Node<E>{
E elem;
Node<E> next, previous;
}
In der sortierten Liste aus, Klasse, ich habe die add-Methode, wo ich zu vergleichen generische Objekte anhand Ihrer Implementierung der compareTo () - Methoden, aber dies bekomme ich syntax Fehler
"Die Methode compareTo(E) ist nicht definiert für den Typ E". Ich habe versucht implemnting der compareTo-Methode in Knoten, aber dann kann ich nicht aufrufen, Objekt-Methoden, weil es E ist generic Art.
Hier ist die nicht-fertige Körper von add(E elem) - Methode.
public void add(E elem)
{
Node<E> temp = new Node<E>();
temp.elem = elem;
if( isEmpty() ) {
temp.next = head;
head.previous = temp;
head = temp;
counter++;
}else{
for(Node<E> cur = head; cur.next != null ; cur= cur.next) {
**if(temp.elem.comparTo(cur.elem)) {**
//do the sort;
}/*else{
cur.previous = temp;
}*/
}
//else insert at the end
}
}
Hier ist man von dem Objekt implemnting compareTo-Methode
public class Patient implements Comparable<Patient>{
public int compareTo(Patient that)
{
return (this.getPriority() <= that.getPriority() ? 1 : 0 );
}
}
Danke Jungs für die vergleichbaren Tipp. Jetzt, nachdem Sie diese änderungen vorgenommen haben, bekomme ich diesen Fehler "Bound mismatch: Der Typ E ist kein Gültiger Ersatz für die begrenzt den parameter <E extends Vergleichbar<E>> der Typ Knoten<E>" in dieser Zeile Knoten<E> temp = new Knoten<E>(); temp.elem = elem;
InformationsquelleAutor hash | 2011-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gebunden E Vergleichbar:
Wird es kompiliert jetzt.
InformationsquelleAutor Bohemian
Wenn Sie möchten, dass die Elemente in Ihrer gespeicherten Knoten vergleichbar sind, können Sie dieser Verwendung von Generika:
diese Weise ist es sicher, dass jeder
E
implementiert dieComparable
- Schnittstelle, so können Sie sicher rufen diecompareTo
Methode.Bedeutet es, dass der patient Klasse implementieren muss Knoten als Schnittstelle?
Es hat nur zur Umsetzung der
Comparable<Patient>
- Schnittstelle, was bedeutet, implementieren SiecompareTo(Patient other)
Methode.Nein. Patient ist der Vergleichbar Knoten hält. Patient muss nicht und sollte nicht, wissen über Knoten.
+1 für "great minds think alike"
InformationsquelleAutor Waldheinz
Scheint es, dass Ihr generic
E
mussE extends Comparable<E>
. Auf diese Weise bekommen Sie den Zugang zu dencompareTo(E other)
Methode. Allerdings werden Sie nicht in der Lage, Elemente hinzufügen, die nicht der Implementierung dieser Schnittstelle.InformationsquelleAutor Sorrow
Versuchen
InformationsquelleAutor Dorus