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

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日

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题