создание бинарного дерева поиска вызывает исключение - PullRequest
0 голосов
/ 13 декабря 2010

другие говорят, что для создания бинарного дерева поиска с массивом {3,7,1,90,45,67,54,23,...} хорошо работать с TreeSet. Но мой код ниже выдаст исключение, и я не знаю почему? мой список массивов "array" содержит 100 objects, что у каждого объекта есть two fields 1)digit 2)name, и я хочу сделать BST с полем цифры этих объектов. Пожалуйста, помогите мне спасибо.

     TreeSet<Element> set = null;
     set = new TreeSet<Element>();
     for(Element e :array){
         set.add(e);
     }

    Iterator it1 = set.iterator();

    while (it1.hasNext()) {
        Object o1 = it1.next();
        System.out.println(o1);
    }

Исключение:

Exception in thread "main" java.lang.ClassCastException: OBST.Element cannot be cast to java.lang.Comparable
    at java.util.TreeMap.put(TreeMap.java:542)
    at java.util.TreeSet.add(TreeSet.java:238)
    at OBST.GreedyVersion.<init>(GreedyVersion.java:25)
    at OBST.GreedyVersion.main(GreedyVersion.java:66)

из-за строки: set.add(e);

Ответы [ 4 ]

6 голосов
/ 13 декабря 2010

Это действительно плохой вопрос.В другом своем вопросе (и здесь) вы говорите, что у вас есть {3,7,1,90,45,67,54,23,...}.Но вы объявляете свой сет TreeSet<Element> set.Так что у тебя на самом деле есть?У вас есть массив целых чисел?Или это массив Elements?

Если это действительно массив элементов, в сообщении об ошибке будет указано, в чем именно проблема, ваш класс Element должен реализовать Comparable

4 голосов
/ 13 декабря 2010

Ваш класс Element не реализует интерфейс Comparable, который необходим для TreeSet.

Реализация интерфейса Comparable в Element заставит вас реализовать compareTo метод.Это будет определять, как объекты типа Element rank друг против друга.Это необходимо TreeSet, чтобы он знал, как и где разместить каждый Element в дереве.

0 голосов
/ 13 декабря 2010

Я думаю, что вы получаете эту ошибку, потому что добавляемые вами элементы не реализуют интерфейс Comparable.Что это за массив?

0 голосов
/ 13 декабря 2010

Java поддерживает только сортируемые элементы в TreeSet. Чтобы сделать элемент сортируемым, он должен реализовать интерфейс Comparable .

...