Il mio progetto è una rubrica che utilizza BSTree<E>. Ogni nodo dell'albero è BTNode<E>. Nella classe principale, sostituisco E con classe di coppia, che ha (String name, String number), quando io definisco i nodi.
Ho la seguente classe di confronto per confrontare tra 2 tipi E:
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);
}
}
e lo uso in BSTree<E>.
Ora, quando faccio funzionare il programma e si tratta del confronto, mi dà errori al comparatore perché ora mette a confronto tra due coppie
Come posso risolvere questo problema? Quello che voglio è quello di confrontare tra i nomi delle due coppie?
Ci dispiace per il mio cattivo spiegazione. Il mio inglese è debole.
=========================
Modificare:
@ Tim: Dopo aver provato la soluzione mi dà questo errore:
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)
A proposito, ho decleared BTNodeComparator in BSTree come segue:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













