Общий метод определения порядка ArrayList (Java) - PullRequest
1 голос
/ 26 февраля 2012

Я пытаюсь написать метод, который определяет, находится ли ArrayList в порядке возрастания.Тип ArrayList может быть Integer, String и т. Д. Как новичок в Java, я провел последние несколько часов, разбираясь в генериках, сопоставимых и т. Д., И это то, что я получил до сих пор:

static boolean isOrdered(ArrayList<? extends Comparable<?>> a) {
    for(int i=0; i < a.size()-1; i++) {
        if (a.get(i).compareTo(a.get(i+1)) > 0) return false;
    }
    return true;
}

Я получаю следующую ошибку компиляции:

Метод compareTo (capture # 11-of?) В типе Comparable не применим для аргументов (capture # 12-of? Extends Comparable

Из того, что я понял из прочтения этого Я понимаю, что это потому, что не уверен, что можно сделать сравнение. Однако я все еще не уверен, как это исправить.

Я все еще новичок в Java (из Python). Буду признателен за любые советы / идеи. Спасибо!

1 Ответ

4 голосов
/ 26 февраля 2012

Проблема в генериках здесь.Чтобы решить эту проблему, нужно сообщить компилятору, что все элементы имеют одинаковый тип, называемый T:

static <T extends Comparable<T>> boolean isOrdered(ArrayList<T> list)
  ...
}

Это означает, что весь список содержит все элементы некоторого типа T, которыеподдерживает сравнение значений с другими T значениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...