从Java中的List中减去值

时间:2017-05-02 19:21:11

标签: java arrays list

这是我的代码:

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,这段代码的问题是我的行正在切换。

3 个答案:

答案 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);