如何更新 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);
}
我正在尝试更新一个 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);
}