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

}

Как сравнить элемента массива типа generic в таком случаи?
...
Рейтинг: 0 / 0
Компаратор
    #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
Компаратор
    #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
Компаратор
    #37688958
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читайте про Generics в Java, такой трюк у вас не получится, массив элементов должен быть типа Object[]
...
Рейтинг: 0 / 0
Компаратор
    #37689277
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно. Код класса явно другой. В этом коде ошибка "не определен метод compareTo". Если предположить, что там E extends Comparable<E>, а не класс, реализующий Comparable, то да, ошибка будет такая. В этом случае нужно читать про Generics и Raw Types. После этого вам станет понятно, почему нужно будет делать new Comparable[10]. А вообще я бы порекомендовал использовать ArrayList<E> в качестве хранилища.
...
Рейтинг: 0 / 0
Компаратор
    #37689313
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще вы занимаетесь изобретением велосипеда, для сортировки списков в java используется Collections.sort(comparator)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Компаратор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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