在迭代期间更改 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());
}
}
is it possible to change keys of a the same HashMap instance during iteration ? Because map entry set don't have a method entry.setKey(). Now what I can think off is create another 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());
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
也许这有帮助:
Maybe this helps:
您应该将信息保留在其他集合中,以便在迭代后对其进行修改。您只能在迭代器期间使用
iterator.remove()
删除条目。HashMap
合约禁止在迭代期间对其进行修改。You should keep information in other collection to modify it after iteration. You can only remove entry using
iterator.remove()
during iterator.HashMap
contract forbids mutating it during iteration.您可能想要对 HashMap 中的键或值进行四种常见类型的修改。
就像这个例子。
我希望这有帮助
There are four common types of modification you might want to do to the keys or values in a HashMap.
Something like this example.
I hope this helps
当我需要更改地图条目的键时,我进入了这个线程。
就我而言,我在 Map 中有一个 JSON 表示,这意味着它可以保存地图或地图列表,以下是代码:
i got to this thread when i needed to change the keys of the map entries.
in my case i have a JSON representation in a Map , meaning it can hold map or list of maps, here is the code:
最好的办法是将地图复制到具有所需修改的新地图中,然后返回新地图并销毁旧地图。
但是我想知道这个解决方案对性能有什么影响。
The best thing to do is to copy the map into a new one with the modifications you want, then return this new maps and destroy the old one.
I wonder what's the performance impact of this solution however.