List中删除元素陷阱:
1.不能再用迭代器遍历的时候,直接使用list中的remove,这样破坏了结构。
2.如果遍历不使用迭代器(直接用size()控制循环),删除主要i的变化。
import java.lang.reflect.Array;
import java.util.*;
import java.util.Scanner;
import java.util.concurrent.CopyOnWriteArrayList;
public class tt {
public static void main(String args[]){
List<String> strList = new LinkedList<String>();
strList.add("string1");
strList.add("string2");
strList.add("string3");
strList.add("string4");
strList.add("string5");
strList.add("string6");
int num=0;
// // 操作方式1:while(Iterator);报错
// Iterator<String> it = strList.iterator();
// while(it.hasNext()) {
// String s = it.next();
// if("string2".equals(s)) {
// strList.remove(s);
// }
// }
//
// 解决方案1:使用Iterator的remove方法删除元素
// 操作方式1:while(Iterator):不报错
Iterator<String> it = strList.iterator();
while(it.hasNext()) {
it.next();
if(num%2==0) {
it.remove();
}
num++;
}
// for(int i=0; i<strList.size(); i++) {
// if(num%2==0) {
// strList.remove(strList.get(i));
// // strList.remove(i);
// i-=1;// 元素位置发生变化,修改i
// }
// num++;
//}
for (String s:strList){
System.out.println(s);
}
}
}
结果如下: