gpt4 book ai didi

java - 迭代列表映射字符串对象和编辑键时并发修改异常

转载 作者:行者123 更新时间:2023-12-02 01:07:58 27 4
gpt4 key购买 nike

我正在输入 List<Map<String, Object>>查询结果以及列名。有时列名称类似于 TableAlias.ColumnName ,在这种情况下我想将其更改为 ColumnName并删除 TableAlias.为此,我有以下代码:

queryResult = namedParameterJdbcTemplateHive.queryForList(query, paramSource);

for (Map<String, Object> map : queryResult) {
for (Map.Entry<String, Object> entry : map.entrySet()) {
String[] keyData = entry.getKey().split("\\.");
if (keyData.length > 0) {
Object obj = map.remove(entry.getKey());
map.put(keyData[1], obj);
}
}
}

这给了我concurrent modification exception所以我尝试使用如下所示的迭代器:

for (Map<String, Object> map : queryResult) {
for(Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator(); it.hasNext(); ) {
Map.Entry<String, Object> entry = it.next();
String[] keyData = entry.getKey().split("\\.");
if (keyData.length > 0) {
it.remove();
}
}
}

但不确定如何使用新 key 重新添加该项目。

请问有什么建议吗?

最佳答案

我将迭代原始 map 并使用更新后的键填充另一个 map 。

queryResult = namedParameterJdbcTemplateHive.queryForList(query, paramSource);

Map<String, Object> newMap = new HashMap<>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
String[] keyData = entry.getKey().split("\\.");
if (keyData.length > 1) {
newMap.put(keyData[1], entry.getValue());
} else {
newMap.put(entry.getKey(), entry.getValue());
}
}

关于java - 迭代列表映射字符串对象和编辑键时并发修改异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59772099/

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