hashmap 出现并发修改异常的问题

2024-01-10

我在使用地图并执行一些删除操作时收到以下错误。如何避免这种情况?

Caused by: java.util.ConcurrentModificationException
    at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
    at java.util.HashMap$EntryIterator.next(HashMap.java:834)
    at java.util.HashMap$EntryIterator.next(HashMap.java:832)
   Map<FormField, Object> ItemMap = domainItem.getValues();         
   for (Map.Entry<FormField, Object> ValMap : ItemMap.entrySet()) {         
       List<Field> groupIdList = Mapper.getGroupId(groupFieldId);           
       for (Field field : groupIdList) {
           ItemMap.put(new FormField(field), domainItem.getDomainItemLinkId());
       }
       ItemMap.remove(ValMap.getKey());
   }

Update:

使用迭代器和ConcurrentHashMap以避免这种情况

以下不会抛出异常

    Map<Integer, String> map = new ConcurrentHashMap<Integer, String>();
    map.put(1, "a");
    map.put(2, "b");
    map.put(3, "c");
    map.put(4, "d");
    for (Iterator<Integer> keys = map.keySet().iterator(); keys.hasNext();) {
        Integer key = keys.next();
        String val = map.get(key);
        map.remove(key);
    }

或在迭代时使用另一个映射,最后将其复制到源

例如:

    Map<Integer, String> dummy = new HashMap<Integer, String>();
    map.put(1, "a");
    map.put(2, "b");
    map.put(3, "c");
    map.put(4, "d");
    dummy.putAll(map);
    for (Iterator<Integer> keys = dummy.keySet().iterator(); keys.hasNext();) {
        Integer key = keys.next();
        String val = map.get(key);
        map.remove(key);
    }
    System.out.println(map);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hashmap 出现并发修改异常的问题 的相关文章

  • Spark:用列的平均值替换数据框中的空值

    如何创建 UDF 以编程方式将每列中 Spark 数据框中的空值替换为列平均值 例如 在示例中 数据 col1 空值的值为 2 4 6 8 5 5 5 示例数据 col1 col2 col3 2 null 3 4 3 3 6 5 null
  • Java 的 RSA 算法库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想为我的应用程序提供基于 RSA 算法的简单许可机制 有免费的 RSA 库吗 只需使用javax crypto and java sec
  • 是否可以同时读取和写入 java.net.Socket?

    是否可以同时从套接字读取和写入 我有一个连续读取套接字的线程 由于只有一个线程正在从套接字读取数据 因此读取操作是线程安全的 现在我有很多线程 比如100 写入套接字 因此 很明显 我必须通过这样做来使写操作线程安全 package com
  • Log4j2 自动配置

    我在应用时遇到问题log4j2 xml自动配置正确 我认为这与我的文件夹排列有关 我在用着maven添加 log4j2 库并按如下方式安排我的项目 一个包含所有 通用 类的项目 供我的系统的服务器和客户端使用 另一个 核心 项目 服务器端应
  • 如何使用意图将哈希图值发送到另一个活动

    如何发送HashMap从一个意图到第二个意图的价值 另外 如何检索HashMap第二个活动的价值 Java 的 HashMap 类扩展了Serializable接口 这使得可以轻松地将其添加到意图中 使用Intent putExtra St
  • 使用translateX()和translateY()时,窗格布局内的JavaFX文本与其他元素重叠

    下图是对正在发生的情况的描述 我有一个Pane其中包含一个Text我正在使用下面的代码来制作marquee like effect of the Text 所以当Pane没有足够的空间来显示文本 动画正在开始 文本必须来回移动 以便用户可以
  • 颜色资源 ID 返回错误值

    我试图在 onCreate 期间以编程方式从颜色资源设置文本颜色 但得到了一些奇怪的结果 我在 res colors xml 中定义了一个颜色资源
  • 使用 Netbeans 导出 JAR

    如何使用Netbeans将java项目导出到JAR 我找不到像 Eclipse 那样的选项 您需要启用该选项 Project Properties gt Build gt Packaging gt Build JAR after compi
  • 谷歌地图返回空指针异常

    当我尝试在片段上显示地图时 它返回空指针异常 我已将所有内容添加到清单中的每个权限中 我正在附加片段文件 XML 文件和日志目录 Chatffragment java public class ChatFragment extends Fr
  • 如何在 Java 中从任意基数转换为基数 10

    我是 Java 新手 我想编写一个程序 仅使用算术运算将基数 2 3 4 5 6 7 8 9 16 转换为基数 10 我已经完成了从键盘读取字符串 如果数字是十六进制 并将其转换为整数 之后我做了一个 while 循环 将数字分割为数字并将
  • 在手机上单步执行 Android 代码 - 大行号差异

    我正在尝试调试与 Samsung Captivate Galaxy S 上的 ListView 相关的一些代码 我在代码中的某个位置放置了断点 当它停止时 我会在堆栈上返回几帧到 ListView 源 现在 我可以预期会出现一些不匹配的情况
  • 在将应用程序迁移到 Spring Boot 后使用 Spring Data Rest 时,我发现带有 @Id 的实体属性不再编组为 JSON

    这个问题与这个SO问题相关 Spring boot ResponseBody 不序列化实体 id https stackoverflow com questions 24839760 spring boot responsebody doe
  • Java:getInstance 与静态

    目的是什么getInstance 在Java中 在我的研究过程中我一直在读getInstance 有助于实现单例设计模式 根据我的理解 这意味着整个程序中只有一个实例 但我不能只使用静态吗 这不是静态的全部意义吗 如果我只有静态方法和字段
  • 什么是对象发布以及为什么我们需要它?

    在一次 Java 开发人员面试中 我被问到一个问题 什么是对象发布以及为什么我们需要它 我不确定我知道正确的答案 我认为对象发布是指将对象 变量 状态放入堆内存中 线程之间共享对象 变量 需要它 我对吗 如果我错了 请纠正我 我一直在搜索
  • JPanel 上的圆形边框

    我这里得到的是一个带有圆形边框的 JPanel 其设置如下 panel setBorder new LineBorder PanelColor 5 true 问题是 在每个角上都有 2 条从外角到内角的对角不透明线 即边框的长度 边界后面的
  • 使用 Spring Boot 应用程序属性设置 tomcat 属性

    我想为启动提供的 tomcat 设置 maxSwallowSize 属性 我的 application properties 有这一行 server context parameters maxSwallowSize 20971520 由于
  • 在抽象类上使用 Lombok @SuperBuilder 注释和 toBuilder ?

    我有以下课程 SuperBuilder toBuilder true public abstract class Parent SuperBuilder toBuilder true public class Child extends P
  • 在Java中解析包含multipart/form-data请求体的字符串

    问题陈述 我认为标题说明了一切 我正在寻找解析 a 的方法String包含 multipart form data HTTP 请求的正文部分 IE 字符串的内容看起来像这样 xyzseparator blah Content Disposi
  • SnakeYaml“无法找到属性错误”

    这是我的 config yml 的一部分 Authenctication AuthenticationConfig AuthencticationType LDAP LDAPConfig LDAPUrl ldap localhost 389
  • 整个程序可以是不可变的吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我熟悉不可变性并且可以设计不可变类 但我主要拥有学术知识 缺乏实践经验 请参考上面的链接图片 尚不允许嵌入 从下往上看 学生需要新地址

随机推荐

  • 为什么当我指定 -ErrorAction SilentlyContinue 时仍然显示错误?

    PS C Users ad ctjares gt Stop Transcript ErrorAction silentlycontinue Transcription has not been started Use the start t
  • Docker 化您的 Angular NodeJS 应用程序

    我们有一个前端应用程序 它是用 Angular html css javascript 编写的 需要由网络服务器 nginx 托管 Angular 正在与 NodeJs 服务器通信 该服务器将与后端通信 现在我们必须在 Docker 中运行
  • 如何将运送区域名称添加到 WooCommerce 管理订单列表中的新列

    我想在 WooCommerce 的订单概览中显示送货区域名称 这显示了订单概览 这显示了我要显示的运送区域名称 我读过 我可以使用自己的插件来完成此操作 尝试过但失败了 或者在我的函数中使用过滤器 我找到了这个过滤器 可以将日期添加到同一订
  • Windows Phone7:单击按钮打开网页?

    我刚刚搜索 但没有找到在我的 Windows Phone7 应用程序中创建 Web 链接的方法 在Android中TextView有android autoLink Web 在 Windows Phone7 文本块中我没有找到任何相关属性
  • Linux 用户空间 ELF 加载器

    我需要做一件相当不寻常的事情 手动执行 elf 可执行文件 IE 将所有部分加载到正确的位置 查询 main 并调用它 然后进行清理 可执行文件将被静态链接 因此不需要链接库 我还控制基地址 所以不用担心可能的冲突 那么 有没有相关的库呢
  • 安装 Bison 后出现“make: yacc: Command not found”

    在 gcc 4 1 2 linux 5 中运行 makefile 时 出现以下错误 make yacc Command not found 通过谷歌搜索 我了解到可以通过安装 Bison GNU 解析器生成器来纠正此错误 但即使安装了 Bi
  • 文本框的值消失 - 将视图模型绑定到选项卡(内容控件)

    基于MVVM 示例 http msdn microsoft com en us magazine dd419663 aspx作者 Josh Smith 我实现了多选项卡选项 该选项将不同的选项卡绑定到不同的视图模型 使用将视图模型绑定到视图
  • 如何将终端作为侧栏旁边的列移动?

    今天 4 02 22 之后 VSCode 在更新 1 64 0 中引入了 侧面板 它应该提供更多的灵活性等 但就我而言 它实际上破坏了我的布局并采用了我正在使用的选项 我有我的布局 代码 终端 侧边栏 每个都在一列中 现在我无法将终端移动到
  • 如何在SQL Server中删除触发器?

    我需要删除 SQL Server 中的触发器 看起来应该很简单 但是因为有一种称为 删除触发器 的东西 即在删除时调用的触发器 所以似乎不可能找到有关如何实际删除已存在的触发器的资源 跌落触发器 http msdn microsoft co
  • 在SQL中计算给定月份的第一个工作日

    我必须计算每月前 N 天内已支付的所有发票 我有两张桌子 INVOICE 有发票信息 唯一重要的字段称为 datePayment HOLYDAYS 这是一个单列表 该表中的条目的格式为 2009 01 01 2009 05 01 等 我还应
  • php exec() 在 unicode 模式下?

    我需要执行接受 ut8 作为输入或生成 ut8 输出的命令行命令和工具 所以我使用 cmd 它可以工作 但是当我用 exec 从 php 尝试这个时 它不起作用 为了简单起见 我尝试了简单的输出重定向 当我直接在命令提示符下写入时 chcp
  • 检查默认java安装版本是否大于1.x的DOS脚本

    正如主题所说 我需要一个dos脚本来检查windows xp机器上安装的java版本 此外 我需要检查版本是否大于前缀值 1 x 有人可以帮助我吗 Thanks 获取版本 并将其写入临时文件 然后只解析版本本身 echo off echo
  • 重播 vim 宏直到缓冲区结束

    我想运行一个我刚刚在寄存器中录制的宏 x 在 vi m 中打开缓冲区的每一行上 从光标到缓冲区末尾 我该怎么做 我知道我可以重放宏 n 次 15 x 或者按住 直到我到达最后一行 但我只想敲击几个键就可以完成它 就我个人而言 我会做 VG
  • Javascript:for循环属性内的条件递增或递减

    我知道我可以执行 IF ELSE 但我需要知道是否可以设置条件循环 如下所示 for i 0 i
  • 辅助线程的堆栈大小,DEBUG和RELEASE版本差异显着

    在我的 iPhone 应用程序 XCode 3 2 4 iOS3 1 3 中 如果我在 RELEASE 模式下运行应用程序 一切都很好 但在 DEBUG 模式下 应用程序会崩溃并出现 EXC BAD ACCESS 异常 该应用程序会执行一些
  • 检查文件是否包含或加载

    是否有任何优雅的方法来检查文件是否包含在使用中include include once require require once或者页面实际上是直接加载的吗 我正在尝试在创建类文件时在类文件内设置一个测试文件 我正在寻找类似于Python的
  • 使用 Prismatic Sc​​hema 验证多个多态值

    不久前我问过简单的多态模式 https stackoverflow com q 23917495 24874 并且那里的答案一度效果很好 现在我希望验证的地图有一个附加值 该值取决于另一个键的值 该对象的一个 人为示例 type foo t
  • 是否可以使用载波建立动态存储路径?

    我从载波 https github com jnicklas carrierwave用于文件上传 到目前为止我对此非常满意 我的文件存储在亚马逊 s3 上 这相当简单并且工作可靠 现在我有一个名为pictures和上传者姓名MainUplo
  • 使用D语言开发应用程序

    对于那些使用 D 开发过应用程序的人来说 您使用哪些库来构建您的应用程序 那些图书馆有很好的记录吗 你用过探戈吗 您觉得 D 准备好构建大型应用程序了吗 你用的是哪个IDE 也许是下降 请注意 任何 C 库都可以与 D 一起使用 因为 D
  • hashmap 出现并发修改异常的问题

    我在使用地图并执行一些删除操作时收到以下错误 如何避免这种情况 Caused by java util ConcurrentModificationException at java util HashMap HashIterator ne