Mój projekt jest książka telefoniczna, która korzysta BSTree<E>. Każdy węzeł drzewa jest BTNode<E>. W głównej klasy, mogę wymienić E z klasą Para, która ma (String name, String number), kiedy definiują węzły.
Mam następujące klasy komparatora do porównania pomiędzy 2 rodzaje 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);
}
}
i używam go BSTree<E>.
Teraz, gdy uruchamiam program i chodzi do komparatora, to daje mi błędy w komparatora bo teraz porównuje się między dwoma parami
Jak mogę rozwiązać ten problem? Co chcę jest porównanie między nazwiskami dwóch par?
Przepraszam za mój zły wyjaśnień. Mój angielski jest słaby.
=========================
Edytować:
@Tim: Po wypróbowaniu swoje rozwiązanie to daje mi ten błąd:
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, ja decleared BTNodeComparator w BSTree następująco:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













