首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.util.concurrentModification异常在JSONObject上迭代时

java.util.concurrentModification异常在JSONObject上迭代时
EN

Stack Overflow用户
提问于 2017-01-03 12:51:32
回答 2查看 3.7K关注 0票数 3

下面的代码块用于将值存储在JSONObject中,以便对其进行迭代并在前端呈现。

代码语言:javascript
复制
        JSONObject dlCovs = jsonObject.getJSONObject("result").getJSONObject("cov_details");
        Iterator x = dlCovs.keys();
        while (x.hasNext()){
            String key1 = (String) x.next();
            String value1 = dlCovs.optString(key1);
            dlCovs.put("covabbrv",key1);
            dlCovs.put("dcIssuedt",value1);
            dlCovs.put("vecatg",key1);
            dlData.put("dlCovs", dlCovs);
        }

       /* dlCovs.put("covabbrv",cov);
        dlCovs.put("issue_date",issue_date);*/
        dlObj.put("status","valid");
        dlData.put("dlCovs", dlCovs);
        dlData.put("status","valid");

在我获得java.util.concurrentModificationException的while循环中迭代数据时,当我试图调试它们时,它也会将值存储在dlData.put("dlCovs",dlCovs)中,但是一旦它第二次出现迭代,就会引发错误。我遵循JSON值

代码语言:javascript
复制
 "cov_details": {
     "MCWG": "NA",
     "3WTR": "NA",
     "PSV BUS": "NA",
     "LMV": "NA",
     "INVCRG": "NA"
 },

任何帮助都将是非常感谢的,谢谢提前输入代码

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-03 12:54:50

您正在修改地图,同时迭代它的条目。你不能这么做。

将项目放入单独的地图中,然后将其添加到“主”地图中:

代码语言:javascript
复制
  Map newEntries = new HashMap();
  Iterator x = dlCovs.keys();
  while (x.hasNext()){
    String key1 = (String) x.next();
    String value1 = dlCovs.optString(key1);
    newEntries.put("covabbrv",key1);
    // .. etc
  }

  dlCovs.putAll(newEntries);

还有:don't use raw types.您应该声明x如下:

代码语言:javascript
复制
Iterator<String> x = dlCovs.keys();

那你就不需要演员了

代码语言:javascript
复制
String key1 = x.next();

同样:

代码语言:javascript
复制
Map<String, String> newEntries = new HashMap<>();
票数 8
EN

Stack Overflow用户

发布于 2017-01-03 13:32:21

在使用迭代器迭代映射时,不能更改基础映射。它被称为失败快速迭代器,它直接从底层结构读取。Java维护一个名为mods的内部标志,它计算对映射进行的结构更改的数量。如果迭代器在迭代时发现mods要更改,则抛出并发修改异常。在Java中,并发散列映射通过实现故障安全迭代器来解决这个问题。主要是您不能在迭代时更改map的结构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41443951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档