Я добавляю 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();
}
}
}
Но не уверен, как добавить элемент обратно с новым ключом.
Есть предложения, пожалуйста?