#java #sorting #arraylist #set
Вопрос:
Я пытаюсь обновить значение одного списка массивов, я не получаю никаких ошибок IDE, но при попытке запуска я вышел из ошибки индекса. Я смог скомпилировать, используя обычные массивы int.
Мне нужно что-то вроде следующего, но с ArrayList:
for (i = ar.length - 2; (i >= 0) amp;amp; (ar[i] > sort); i--) {
ar[i 1] = ar[i];
printArray(ar);
}
Это то, что у меня есть до сих пор:
for (i = arr.size() - 2; (i >= 0) amp;amp; (arr.get(i) > sort); i--) {
arr.set(arr.get(i 1), arr.get(i));
System.out.println(arr);
}
Ответ №1:
ArrayList.set(int index, Object element)
. Этот метод запрашивает у вас целевой индекс в качестве первого параметра и новый элемент в качестве второго параметра. Вы пытаетесь установить arr.get(i)
в нужное arr.get(i 1)
положение. Я думаю, что вместо этого вы пытаетесь установить его в нужное положение i 1
:
for (i = arr.size()-2; (i >=0) amp;amp; ( arr.get(i)>sort); i--) {
arr.set(i 1, arr.get(i));
System.out.println(arr);
}
Ответ №2:
Проблема в наборе(индекс int, элемент E)
Предположим, что это ваш массив : [1, 2, 3, 4, 5, 6]
На первой итерации:
int val = arr.get(i); //Val = 5 int индекс = arr.get(i 1); //индекс = 6
Ошибка здесь: arr.set (индекс, val) . Как вы видите, «индекс» превышает размер списка, из-за чего возникает проблема.
Ниже приведен код, позволяющий избежать этой проблемы:
for (int i = arr.size()-2 ; (i >=0) amp;amp; (arr.get(i) > sort) ; i--){
arr.set(arr.get(i), arr.get(i));
System.out.println(arr);
}