下面都是用一个简单例子说明一下。
1、for循环倒序
public static void main(String[] args){
List<String> list = new ArrayList<String>();
list.add("111");
list.add("2222");
list.add("333");
list.add("4");
list.add("5");
list.add("6");
list.add("777");
list.add("888");
list.add("9");
for (int i = list.size()-1 ;i>=0;i--) {
String string = list.get(i);
if(string.length()==3){
list.remove(string);
}
}
}
这种方式,正序的时候,会出现,紧邻的元素漏掉的情况,但是倒序的时候,就OK
2、Iterator 迭代器遍历
public static void main(String[] args){ List<String> list = new ArrayList<String>(); list.add("111"); list.add("2222"); list.add("333"); list.add("4"); list.add("5"); list.add("6"); list.add("777"); list.add("888"); list.add("9"); Iterator<String> it = list.iterator(); while(it.hasNext()){ String string = it.next(); if(string.length()==3){ it.remove(); } } }
这种方式是可以正常删除也不会报错,但是需要注意一下,就是这个remove方法,一定要用Iterator的remove方法删除,不能用list本身remove方法删除,不然会报错java.util.ConcurrentModificationException
这是我总结的两种方式删除元素,欢迎补充!
1266

被折叠的 条评论
为什么被折叠?



