Mijn project is een telefoonboek die wordt gebruikt BSTree<E>. Elk knooppunt van de boom is BTNode<E>. In de hoofdklasse, vervang ik E met Pair klasse, die heeft (String name, String number), toen ik de knooppunten definiëren.
Ik heb de volgende comparator klasse te vergelijken tussen 2 E types:
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);
}
}
en ik gebruik het in BSTree<E>.
Nu, als ik het programma uit te voeren en het gaat om de vergelijker, het geeft me fouten in de vergelijker want nu vergelijkt tussen twee paren
Hoe kan ik dit probleem op te lossen? Wat ik wil is te vergelijken tussen de namen van de twee paren?
Sorry voor mijn slechte uitleg. Mijn Engels is zwak.
=========================
Bewerk:
@Tim: Na het uitproberen van uw oplossing geeft het me deze fout:
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)
BTW, ik werd verklaard BTNodeComparator in BSTree als volgt:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













