Mon projet est un répertoire qui utilise BSTree<E>. Chaque nœud de l'arbre est BTNode<E>. Dans la classe principale, je remplace E avec la classe pair, qui a (String name, String number), lorsque je définis les noeuds.
J'ai la classe de comparaison ci-dessous pour comparer entre 2 types 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);
}
}
et je l' utilise dans BSTree<E>.
Maintenant, quand je lance le programme et il vient au comparateur, il me donne des erreurs au comparateur, car il compare maintenant entre deux paires
Comment puis-je résoudre ce problème? Ce que je veux est de comparer entre les noms des deux paires?
Désolé pour ma mauvaise explication. Mon anglais est faible.
=========================
Modifier:
@ Tim: Après avoir essayé votre solution, il me donne cette erreur:
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, je decleared BTNodeComparator en BSTree comme suit:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













