Java三种遍历如何进行list的便利删除:

1、for循环:

常见初五写法:(由于下标问题达不到想要效果)


for(int i=0;i<list.size();i++){ if(list.get(i).equals("del")) list.remove(i); }
应该改为:(倒序操作避免下标问题)


int size = list.size(); for(int i=size-1;i>=0;i--){ if(list.get(i).equals("del"
)) list.remove(i); }
2、增强for循环(foreach循环):

常见错误:(会抛出ConcurrentModificationException)


for(String x:list){ if(x.equals("del")) list.remove(x); }
应改为:




//cowlist为原list CopyOnWriteArrayList<Record> list = new
CopyOnWriteArrayList<Record>(cowList); for(String x:list){ if(x.equals("del"))
list.remove(x); }
3、iterator遍历:(注意要是用迭代器的remove方法,不能使用list的remove方法)


Iterator<String> it = list.iterator(); while(it.hasNext()){ String x =
it.next();if(x.equals("del")){ it.remove(); } }最好使用Iterator遍历。