Сортировка универсального ArrayList из ArrayLists
У меня есть список точек. Я представлял это как ArrayList из ArrayLists. Я пытаюсь использовать дженерики, чтобы в списке можно было хранить целые числа, числа с плавающей запятой и т. Д. И обрабатывать их одинаково. Так что я:
ArrayList<ArrayList<? extends Number>>.
Мне нужно сравнить эти списки на основе одного элемента в каждом внутреннем списке.
Поэтому для этого я написал собственный компаратор, который я использую в Collections.sort
Компаратор выглядит так:
int compare(ArrayList<? extends Number> a, ArrayList<? extends Number> b )
{
return a.get(index).compareTo(b.get(index))
}
Это не компилируется, конечно. Компилятор жалуется на то, что для класса с подстановочными знаками нет метода compareTo.
Возможно ли то, что я пытаюсь сделать?
1 ответ
Решение
Как насчет определения вашего Comparator
Класс как:
class MyComparator<T extends Number & Comparable<T>>
implements Comparator<ArrayList<T>> {
@Override
public int compare(ArrayList<T> a, ArrayList<T> b) {
return a.get(index).compareTo(b.get(index));
}
}