Το έργο μου είναι μια τηλεφωνικού καταλόγου που χρησιμοποιεί BSTree<E>. Κάθε κόμβος του δέντρου είναι BTNode<E>. Στην κύρια κατηγορία, θα αντικαταστήσει Ε με την κατηγορία ζευγάρι, το οποίο έχει (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>.
Τώρα, όταν τρέχω το πρόγραμμα και πρόκειται για το σύγκρισης, μου δίνει λάθη στο συγκριτικό επειδή τώρα συγκρίνει ανάμεσα σε δύο ζεύγη
Πώς μπορώ να επιλύσει αυτό το ζήτημα; Αυτό που θέλω είναι να συγκριθούν μεταξύ των ονομάτων των δύο ζευγαριών;
Συγγνώμη για την κακή εξήγηση μου. Αγγλικά μου είναι αδύναμη.
=========================
Επεξεργασία:
@Tim: Μετά από προσπάθεια λύση σας μου δίνει αυτό το σφάλμα:
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 BTNodeComparator στο BSTree ως εξής:
protected Comparator<E> c = new BTNodeComparator();
if (c.compare(target, cursor.getElement()) < 0) cursor = cursor.getLeft();













