Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Компаратор / 6 сообщений из 6, страница 1 из 1
02.03.2012, 05:38:53
    #37687477
vaifer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компаратор
Есть класс:
public clas SortedList<E>{
E[] arrays;

}

Как сравнить элемента массива типа generic в таком случаи?
...
Рейтинг: 0 / 0
02.03.2012, 10:33:42
    #37687737
maxkar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компаратор
Или E должен реализовывать Comparable<E>
Код: java
1.
2.
3.
4.
5.
public class SortedList<E extends Comparable<E>> {
  public void test() {
    arrays[0].compareTo(arrays[1]);
  }
}


Или нужно явно передавать компаратор:
Код: java
1.
2.
3.
4.
5.
6.
7.
public class SortedList<E> {
  E[] arrays;
  Comparator<E> comp;
  public void test() {
    comp.compare(arrays[0], arrays[1]);
  }
}
...
Рейтинг: 0 / 0
02.03.2012, 16:50:29
    #37688825
vaifer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компаратор
Вот код моего класса:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class SortedList<E> implements Comparable<E>{

    private E[] array;
    private int length;
    Comparator<E> comp;
    public SortedList() {
        array = (E[]) new Object[10];
        this.length = 0;
    }
    
    public void insert(E obj){
        array[length] = obj;
        length++;
    }

}




при таких реализациях возникают проблемы с инициализацией массива:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable;
...
Рейтинг: 0 / 0
02.03.2012, 17:25:18
    #37688958
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компаратор
Читайте про Generics в Java, такой трюк у вас не получится, массив элементов должен быть типа Object[]
...
Рейтинг: 0 / 0
02.03.2012, 22:08:04
    #37689277
maxkar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компаратор
Странно. Код класса явно другой. В этом коде ошибка "не определен метод compareTo". Если предположить, что там E extends Comparable<E>, а не класс, реализующий Comparable, то да, ошибка будет такая. В этом случае нужно читать про Generics и Raw Types. После этого вам станет понятно, почему нужно будет делать new Comparable[10]. А вообще я бы порекомендовал использовать ArrayList<E> в качестве хранилища.
...
Рейтинг: 0 / 0
02.03.2012, 22:49:44
    #37689313
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компаратор
Вообще вы занимаетесь изобретением велосипеда, для сортировки списков в java используется Collections.sort(comparator)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Компаратор / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]