在迭代过程中更改HashMap密钥

问题描述

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

解决方法

是否可以在迭代过程中更改同一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());
    }
}