如何更新 ArrayList 中的值

How to update on value in ArrayList

我正在尝试更新一个 ArrayList 的值,我没有收到任何 IDE 错误,但是当尝试 运行 时,我遇到了索引错误。我能够使用常规的 int 数组进行编译。

我需要像下面这样的东西,但带有 arrayList:

for (i = ar.length - 2; (i >= 0) && (ar[i] > sort); i--) {
    ar[i + 1] = ar[i];
    printArray(ar);
}

这是我目前拥有的:

for (i = arr.size() - 2; (i >= 0) && (arr.get(i) > sort); i--) {
    arr.set(arr.get(i + 1), arr.get(i));
    System.out.println(arr);
}

ArrayList.set(int index, Object element)。此方法要求您将目标索引作为第一个参数,将新元素作为第二个参数。您正在尝试将 arr.get(i) 设置为 arr.get(i+1) 位置。我认为您正在尝试将其设置为 i+1 位置:

for (i = arr.size()-2; (i >=0) && ( arr.get(i)>sort); i--) {
    arr.set(i+1, arr.get(i));
    System.out.println(arr);
}

问题在于 set(int index, E element)

假设这是你的数组:[1, 2, 3, 4, 5, 6]

第一次迭代:

int val = arr.get(i); //值 = 5 int 索引 = arr.get(i+1); //索引 = 6

错误在这里:arr.set (index, val) 。如您所见,“索引”大于列表大小,因此导致了问题。

下面的代码和平避免了这个问题:

for (int i = arr.size()-2 ; (i >=0) && (arr.get(i) > sort) ; i--){
            arr.set(arr.get(i), arr.get(i));
            System.out.println(arr);
        }