通常都是for循环遍历从前往后顺序,这时候遇到符合条件的通过下标把该数据删掉,
for (int i = 0; i < 40; i++) {
if(i==2){
removeAt(i)}
}
删一个数据不会出问题,如果要删多个数据就会有问题了,比如i为0时删了列表第一个,那列表原先的第二个就成为了第一个。这时候i==1了,后来成为第一个的元素不会被删掉,而是删了原来的第三个。
解决方法就是从后面往前删,元素的下标不会改变。
for(int i=list.size()-1;i>=0;i--){
System.out.print(list.get(i)+"\t");
}