当使用ArrayList删除指定的某些元素时,想到的最直观的方法是调用remove(index)方法,不过这种方法有缺陷,比如如下代码:
List<Integer> num=new ArrayList<Integer>();
num.add(1);
num.add(2);
num.add(3);
num.add(1);
num.add(2);
int len=num.size();
for (int i=0;i<len;i++) {
if(num.get(i)==1) {
num.remove(i);
}
}
执行程序会抛异常
这主要是因为要删除的元素有多个,当删除一个元素后,list的大小已经发生了改变,所以会越界。
可以再次基础上稍作修改进行解决,每次都重新获取数组的size:
List<Integer> num=new ArrayList<Integer>();
num.add(1);
num.add(2);
num.add(3);
num.add(1);
num.add(2);
for (int i=0;i<num.size();i++) {
if(num.get(i)==1) {
num.remove(i);
}