美文网首页程序员Java 杂谈
List三种遍历方式删除元素

List三种遍历方式删除元素

作者: kangyiii | 来源:发表于2017-06-01 18:07 被阅读0次

通常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循环不能删除

相关文章

网友评论

    本文标题:List三种遍历方式删除元素

    本文链接:https://www.haomeiwen.com/subject/hqbefxtx.html