在迭代期间更改哈希映射键

2022-09-01 20:48:24

是否可以在迭代期间更改同一HashMap实例的键?因为映射条目集没有方法 entry.setKey()。现在我能想到的是创建另一个HashMap...

MultipartParsingResult parsingResult = parseRequest(request);

Map<String, String[]> mpParams = parsingResult.getMultipartParameters();
Map<String, String[]> mpParams2 = new HashMap<String, String[]>();

Iterator<Entry<String,String[]>> it = mpParams.entrySet().iterator();

while (it.hasNext()) {
    Entry<String,String[]> entry = it.next();
    String name = entry.getKey();

    if (name.startsWith(portletNamespace)) {
        mpParams2.put(name.substring(portletNamespace.length(), name.length()), entry.getValue());
    }
    else {
        mpParams2.put(name, entry.getValue());
    }
}

答案 1

也许这有帮助:

map.put(newkey,map.remove(oldkey));

答案 2

应将信息保留在其他集合中,以便在迭代后对其进行修改。您只能在迭代器期间删除条目。 合约禁止在迭代期间改变它。iterator.remove()HashMap