Сортировка универсального 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));
    }
}
Другие вопросы по тегам