• 技术文章 >Java >java教程

    java集合迭代器Iterator中的remove陷阱

    高洛峰高洛峰2016-11-22 17:08:24原创670
    package TestList;

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.TreeSet;

    public class TestIterator {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    List<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    Iterator t = list.iterator();
    while(t.hasNext()){
    if(t.next().equals("bbb")){ //使用iterator遍历list集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第二个元素的时候去删除
    list.remove("ccc");
    }
    }

    TreeSet<String> set = new TreeSet<String>();
    set.add("ddd");
    set.add("eee");
    set.add("fff");
    Iterator t1 = set.iterator();
    while(t1.hasNext()){
    if(t1.next().equals("fff")){ //使用iterator遍历set集合时,如果想要删除任一集合内元素,必须要在正好遍历倒数第一个元素的时候去删除
    set.remove("eee");
    }
    }
    }

    }

    由于List,Set在实现Iterator时存在一定的差异,因此导致了List,Set在迭代的同时删除集合元素的会有不同的表现
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java
    上一篇:Java 线程状态之 BLOCKED 下一篇:尝试解决Java多行字符串的编辑问题
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• Java集合框架之PriorityQueue优先级队列• 一起来聊聊与Java中性能相关的设计模式• JAVA外观模式详解• Java图文详解之实现图书管理系统• 详细整理java枚举的使用总结
    1/1

    PHP中文网