Můj projekt je telefonní seznam, který používá BSTree<E>. Každý uzel stromu je BTNode<E>. V hlavní třídě, vyměním E s Pair třída, která má (String name, String number), když jsem definovat uzly.
Mám následující třídu komparátor pro porovnání mezi 2 typy 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);
}
}
a používám ho BSTree<E>.
Teď, když jsem spustit program a jde o komparátor, to mi dává chyby v komparátor, protože teď se srovnává mezi dvěma páry
Jak mohu tento problém vyřešit? To, co chci, je porovnávat mezi jmény dvou párů?
Omlouvám se za mé špatné vysvětlení. Moje angličtina je slabý.
=========================
Upravit:
@Tim: Poté, co se snaží své řešení dává mi tuto chybu:
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, decleared I BTNodeComparator v BSTree takto:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













