Мой проект является книгой , которая использует BSTree<E>. Каждый узел дерева BTNode<E>. В главном классе, я заменяю E с классом Pair, который имеет (String name, String number), когда я определяю узлы.
У меня есть следующий класс компаратор для сравнения между 2 типа 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);
}
}
и я использую его в BSTree<E>.
Теперь, когда я запускаю программу, и она приходит к компаратора, она дает мне ошибки на компаратор, потому что теперь он сравнивает между двумя парами
Как я могу решить эту проблему? То, что я хочу, чтобы сравнить между именами двух пар?
Извините за мое плохое объяснение. Мой английский слаб.
=========================
Редактировать:
@ Тим: После попытки своего решения он дает мне эту ошибку:
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)
Кстати, я decleared BTNodeComparator в BSTree следующим образом:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













