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

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日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装