通常List的遍历方式为三种:普通遍历,迭代器遍历(Iterator),增强型for(JDK1.5新增)
普通遍历
ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
for(int i = 0; i < list.size(); i++) {
if("b".equals(list.get(i))) {
list.remove(i--);//通过索引删除元素
}
}
注意: 通过索引remove,每次remove,之后的元素索引会自动往前移动,故需要让索引回退到删除之前的位置
迭代器遍历(2种写法)
Iterator<String> it = list.iterator();
while(it.hasNext()) {
if("b".equals(it.next())) {
//list.remove("b");
it.remove();
}
}*/
/*for(Iterator<String> it2 = list.iterator(); it2.hasNext();) {
if("b".equals(it2.next())) {
//list.remove("b");
it2.remove();
}
}
增强型for(JDK1.5新增)
for (String string : list) {
if("b".equals(string)) {
list.remove("b");
}
}
总结
普通遍历:通过索引删除元素,但是索引要--
迭代器遍历:可以删除,必须使用迭代器自身的remove方法,否则会出现并发修改异常
增强型for(JDK1.5新增):增强for循环不能删除