ArrayList在删除元素的时候会重新进行排序,即被删元素后的元素往前排一位,因此如果要对List进行遍历删除的话,可能无法达到理想的效果,有以下两种方法可以正确遍历删除元素:
1.倒序循环删除
List<String> list = new ArrayList<String>();
list.add("东");
list.add("西");
list.add("南");
list.add("北");
list.add("中");
for(int i=list.size()-1;i>=0;i--){
if("东".equals(list.get(i)) || "西".equals(list.get(i))){
list.remove(i);
}
}
2.迭代器删除
List<String> list = new ArrayList<String>();
list.add("东");
list.add("西");
list.add("南");
list.add("北");
list.add("中");
Iterator it = list.iterator();
while(it.hasNext()){
String str = (String)it.next();
if ("东".equals(str) || "西".equals(str)) {
it.remove();
}
}