异常原因
记录一次问题处理日志:Java中直接对使用for-each进行迭代实际上也会出现这种问题。可以先把集合转成iterator,再进行循环,可解决此问题。
下面展示一些 内联代码片
。
// java.util.ConcurrentModificationException
Set<String> strings = ((JSONObject) jsonArray.get(0)).keySet();
Set<String> stringsCopy = new HashSet<>(strings);
Set<String> thirdStrs = ((JSONObject) thirdArray.get(0)).keySet();
Iterator<String> iterator = stringsCopy.iterator();
while (iterator.hasNext()){
String s = iterator.next();
Map<String, JSONArray> groupedThirdArray = thirdArray.stream().map(obj -> (JSONObject) obj).collect(Collectors.groupingBy(
json -> json.getString(s),
() -> new HashMap<>(),
Collectors.mapping(JSONObject::toJSON,
Collectors.toCollection(JSONArray::new)))
);
((JSONArray) result.get(value1).get(parentNodeNames.get(value1))).forEach(res->{
if (groupedThirdArray.get(((JSONObject) res).get(s)).size()>0){
((JSONObject) res).put(byId.getThirdParamName(),groupedThirdArray.get(((JSONObject) res).get(s)));
}
});
}
链接: 参考文档链接如下