Обратное повторение через ArrayList дает IndexOutOfBoundsException

Это когда массив гниет и указывает на: -)

На самом деле, это просто, если вы хотите передать массив где-нибудь, но вместо этого указатель передается (потому что кто, черт возьми, передал бы весь массив для вас), люди говорят, что плохой массив распался на указатель.

31
задан David Z 24 February 2009 в 02:50
поделиться

4 ответа

Запустите повторение в list.size() - 1, потому что массив (или ArrayList) элементы пронумерован от 0 через 1 меньше, чем размер списка. Это - довольно стандартная идиома:

for (int j = list.size() - 1; j >= 0; j--) {
    // whatever
}

Примечание, что Ваш вперед повторение работает, потому что оно останавливается прежде достижение list.size().

63
ответ дан 27 November 2019 в 21:19
поделиться

list.size () проходит последний допустимый индекс.

for(int j = list.size() - 1; j >= 0; j--) {
  System.out.println(list.get(j));
}
11
ответ дан 27 November 2019 в 21:19
поделиться

Массивы Java индексируются нулем. Необходимо будет установить j = list.size () - 1 и продолжить до j = 0.

4
ответ дан 27 November 2019 в 21:19
поделиться

Избегать индексов вообще? Как насчет:

for (ListIterator iterator = list.listIterator(list.size()); iterator.hasPrevious();) {
  final Object listElement = iterator.previous();
}
87
ответ дан 27 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: