Как обновить значение в списке ArrayList

#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);
        }