Mein Projekt ist ein Telefonbuch , das verwendet BSTree<E>. Jeder Knoten des Baumes ist BTNode<E>. In der Hauptklasse, ich ersetzen E mit Pair - Klasse, die hat (String name, String number), wenn ich die Knoten definieren.
Ich habe folgende Vergleichsklasse zwischen 2 E-Typen vergleichen:
import java.util.Comparator;
public class BTNodeComparator<E> implements Comparator<E>
{
public int compare(E a, E b) throws ClassCastException
{
return ((Comparable<E>) a).compareTo(b);
}
}
und ich benutze es in BSTree<E>.
Nun, wenn ich das Programm ausführen, und es kommt zu dem Komparator, es gibt mir Fehler am Komparator, weil jetzt ist es zwischen zwei Paaren vergleicht
Wie kann ich dieses Problem lösen? Was ich will, ist zwischen den Namen der beiden Paare zu vergleichen?
Sorry für meine schlechte Erklärung. Mein Englisch ist schwach.
=========================
Bearbeiten:
@ Tim: Nach Ihrer Lösung versuchen, es gibt mir diese Fehlermeldung:
java.lang.NullPointerException
at Pair.compareTo(Pair.java:36) // @ return name.compareTo(pair.getName());
at Pair.compareTo(Pair.java:2) // @ public class Pair implements Comparable<Pair>
at BTNodeComparator.compare(BTNodeComparator.java:24) // @ return (a.compareTo(b));
at BTNodeComparator.compare(BTNodeComparator.java:20) // @ public class BTNodeComparator<E extends Comparable<E>> implements Comparator<E>
at BSTree.search(BSTree.java:285)
at BSTree.insert(BSTree.java:300)
at PhoneBook.main(PhoneBook.java:25)
Übrigens, ich decleared BTNodeComparator in BSTree wie folgt:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













