uie糖心甜酒 2020-05-29 09:58 采纳率: 50%
浏览 770
已采纳

Android中hashmap遍历删除已用iterator.remove()依旧报错

球球好心人康康,实在是没辙了,本人小菜鸟,公司就我一个安卓开发,也没人可问。

HashMap遍历删除写在方法内的一个线程里:

new Thread(new Runnable() {
    @Override
    public void run() {
        Iterator iterator = three.keySet().iterator();
        while (iterator.hasNext()) {
            …
            iterator.remove();        
            three.remove(key);  //这行代码
                }
        }
    }
}).start();

报错信息:

E/AndroidRuntime: FATAL EXCEPTION: Thread-1317
    Process: com.example.administrator.i, PID: 4777
    java.util.ConcurrentModificationException
        at java.util.HashMap$HashIterator.remove(HashMap.java:869)
        at com.example.administrator.i.MainActivity$12.run(MainActivity.java:911)
        at java.lang.Thread.run(Thread.java:760)

太难了,网上找的都是报的nextEntry()方法错误。而且我已经用了iterator,为什么还是删除出问题呢??

  • 写回答

1条回答 默认 最新

  • 韩曙亮 2023年度博客之星评选 TOP 1 2020-05-30 14:17
    关注

    iterator.remove() 操作就可以删除这个元素了 ,

    three.remove(key) 操作是多余的 , 另外遍历删除一定要使用 iterator 删除 , 遍历的时候 不要直接调用集合删除的方法 ;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 9月3日