public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(1);
list.add(2);
list.add(3);
list.add(4);
for (int i=0; i<list.size(); i++) {
if (list.get(i) == 1) {
list.remove(i); // error
}
}
System.out.println(list);
}
在使用场景时,是为了过滤数字1。而在使用list.remove(i)时,这样会导致索引出错,只要删除了一个数字1之后,就会导致list中的元素全部依次左移一位,也就是索引全部-1。
所以为了正常使用需要改成 list.remove(i--);
还有一个特别需要强调的地方,在使用以上方法时,一定要注意不能这样使用,如:
int size = list.size();
for (int i=0; i<size ; i++) {
if (list.get(i) == 1) {
list.remove(i); // error
}
}
第二种方法:
if (list.get(i) == 1) {
list.remove(i);
i--;
continue;
}
推荐使用第一种简单明了