Проблема в том, что коллекция заполнена универсальным типом.
Любой алгоритм сортировки предполагает сравнение элементов с каждым другой. Но сравнение выделено красным. Я вижу ошибку: «Оператор '>' нельзя применить к '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
Мобильная версия