Mitt prosjekt er en telefonbok som bruker BSTree<E>. Hver node i treet er BTNode<E>. I hovedklassen, jeg erstatte E med Pair klasse, som har (String name, String number), når jeg definerer nodene.
Jeg har følgende komparatoren klassen for å sammenligne mellom 2 E typer:
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);
}
}
og jeg bruker det i BSTree<E>.
Nå, når jeg kjører programmet og det kommer til komparator, det gir meg feil på komparator fordi nå er det sammen mellom to par
Hvordan kan jeg løse dette problemet? Det jeg ønsker er å sammenligne mellom navnene på de to parene?
Sorry for min dårlige forklaring. Min engelsk er svak.
=========================
Redigere:
@Tim: Etter å ha prøvd løsningen gir meg denne feilmeldingen:
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, jeg erklæring av BTNodeComparator i BSTree som følger:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













