项目用到了for循环删除多个元素,自己尝试了几遍,得出两个方法,在这里记录一下
下面都是用一个简单例子说明一下。
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
这是我总结的两种方式删除元素,欢迎补充!