这是我的代码:
public void tick {
for (Integer i : list) {
int ixx = i-1;
list.add(i-1);
list.remove(i);
System.out.println(list);
}
}
我有一个“x”元素列表(它们是int值)。在每个“tick”上我想从前一个值(从整个数组)中扣除-1
,这段代码的问题是我的行正在切换。
答案 0 :(得分:2)
list.remove()
会抛出ConcurrentModificationException。
因此,您需要使用list.set() 在迭代列表时设置索引值,如下面的代码所示(按照注释):
for (int i = 0; i < list.size(); i++) {
int val = list.get(i);//get the value
list.set(i, (val-1));//subtract and set the value at the same index
}
答案 1 :(得分:0)
如果您不需要使用list,可以使用int数组和for循环:
int[] a = {1, 2, 3, 4};
for (int i = 0; i < a.length; i++)
a[i] -= 1;
System.out.println(Arrays.toString(a));
输出:
[0, 1, 2, 3]
答案 2 :(得分:0)
整数是不可变的,但是如果java8那么你可以调用方法replaceAll
,doc here
List<Integer> l = Arrays.asList(2, 4, 6, 8, 10);
System.out.println(l);
l.replaceAll(x -> --x);
System.out.println(l);