我创建了一个hashmap,如下所示:
Map<String, String> streetno = new HashMap<String, String>();
streetno.put("3", "Sachin");
streetno.put("2", "Dravid");
streetno.put("1", "Sehwag");
streetno.put("5", "Laxman");
streetno.put("4", "Kohli");
现在我想创建一个新的hashmap,其中上面的hashmap的键变为值,value变为key,如下所示:
Map<String, String> streetname = new HashMap<String, String>();
streetname.put("Sachin", "3");
streetname.put("Dravid", "2");
streetname.put("Sehwag", "1");
streetname.put("Laxman", "5");
streetname.put("Kohli", "4");
我不知道该怎么做..任何人都可以帮我解决这个问题。
答案 0 :(得分:4)
Map<String, String> streetname = new HashMap<String, String>();
for (Entry<String,String> e : streetno.entrySet()) {
streetname.put(e.getValue(), e.getKey());
}
这里,for
循环遍历原始地图中的所有条目(即键/值对),并将它们插入到第二个地图中,并交换键和值。
检查put()
是否返回null
可能是个好主意。如果您获得非空值,则表示streetno
中的值不是唯一的。由于这是作业,我留给你来弄清楚后果,以及如何最好地处理这个问题。
答案 1 :(得分:2)
完美的你几乎就在那里。现在,您需要迭代第一个哈希映射键并模拟您在这5行中所做的操作:
streetname.put("Sachin", "3");
streetname.put("Dravid", "2");
streetname.put("Sehwag", "1");
streetname.put("Laxman", "5");
streetname.put("Kohli", "4");
提示:迭代地图对你来说可能有点棘手,但通常是这样做的:
for (String key : streetno.keySet()) {
...
}
祝你的作业好运!
答案 2 :(得分:0)
Java 8:
Map<String, String> streetname =
streetno.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
注意:
如果您想使用parellelstream()
代替stream()
三思而后行。这只适用于Map
非常大的情况。