Как реализовать метод сортировки для коллекции, если она заполнена универсальным типом?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как реализовать метод сортировки для коллекции, если она заполнена универсальным типом?

Сообщение Anonymous »

Мне нужно написать метод для сортировки коллекции.
Проблема в том, что коллекция заполнена универсальным типом.
Любой алгоритм сортировки предполагает сравнение элементов с каждым другой. Но сравнение выделено красным. Я вижу ошибку: «Оператор '>' нельзя применить к 'T', 'T'».
Как это исправить? В моем задании строго указано, что сортировка должна быть реализована для универсального типа!
Все классы, соответствующие универсальному типу, имеют описанный метод CompareTo().
Возможно, мне как-то следует передать методу сортировки конкретный компаратор?
Пример кода:

Код: Выделить всё

public abstract class CustomClass  {
}

public class SomeClass1 extends CustomClass implements Comparable {
private int value1;
private String value2;
private int value3;
@Override
public int compareTo(SomeClass1 o){
return Integer.compare(this.value1, o.getvalue1());
}

public class SomeClass2 extends CustomClass implements Comparable {
private int value1;
private String value2;
private int value3;
@Override
public int compareTo(SomeClass2 o){
return Integer.compare(this.value1, o.getvalue1());
}

import java.util.ArrayList;
import java.util.Collections;
public class CustomClassSort {
private CustomClassSort(){
}
public static  void Sort (ArrayList array){
for (int s = array.size() / 2; s > 0; s /= 2) {
for (int i = s; i < array.size(); ++i){
for (int j = i - s; j >= 0 && array.get(j) > array.get(j + s); j -= s){
Collections.swap(array, j, j + s);
}
}
}
}
в этом коде раздел

Код: Выделить всё

array.get(j) > array.get(j + s)
вызывает ошибку
Оператор '>' нельзя применить к 'T', 'T'
введите здесь код

Подробнее здесь: https://stackoverflow.com/questions/792 ... -generic-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»