Proiectul meu este o agendă telefonică care utilizează BSTree<E>. Fiecare nod al arborelui este BTNode<E>. În clasa principală, înlocuiți E cu clasa Pair, care are (String name, String number), atunci când am defini nodurile.
Am următoarea clasă de comparator pentru a compara între 2 tipuri 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 - l folosesc în BSTree<E>.
Acum, când am rulat programul și când vine vorba de comparator, acesta îmi dă erori la comparator, deoarece acum se compară între două perechi
Cum pot rezolva această problemă? Ceea ce vreau este de a compara între numele celor două perechi?
Ne pare rău pentru explicația mea proastă. Engleza mea este slabă.
=========================
Editați | ×:
@Tim: După ce a încercat soluția ta mi dă această eroare:
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, am decleared BTNodeComparator în BSTree, după cum urmează:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













