gpt4 book ai didi

迭代 JSONObject 时出现 java.util.concurrentModification 异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:40:15 31 4
gpt4 key购买 nike

我有以下代码块,我想使用它来将值存储在 JSONObject 中,以便迭代它并在前端呈现它。

        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");

在 while 循环中迭代数据时我得到 java.util.concurrentModificationException,当我尝试调试它时也是这种情况,它正在将值存储在 dlData.put("dlCovs",dlCovs) ,但是一旦它第二次进行迭代,它就会抛出错误。我遵循 JSON 值

 "cov_details": {
"MCWG": "NA",
"3WTR": "NA",
"PSV BUS": "NA",
"LMV": "NA",
"INVCRG": "NA"
},

任何帮助将不胜感激,在此先感谢 在这里输入代码

最佳答案

您在迭代其条目的同时修改 map 。你不能那样做。

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

  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:

Iterator<String> x = dlCovs.keys();

那么你不需要强制转换:

String key1 = x.next();

类似地:

Map<String, String> newEntries = new HashMap<>();

关于迭代 JSONObject 时出现 java.util.concurrentModification 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443951/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com