我创建了一个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的key变成value,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");我不知道该怎么做..有人能帮我解决这个问题吗..
发布于 2012-02-26 22:26:51
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中的值不是唯一的。因为这是家庭作业,所以我留给你来弄清楚后果,以及如何最好地处理这件事。
发布于 2012-02-26 22:28:20
太好了,你就快到了。现在,您需要迭代第一个散列映射键,并模拟您在这5行中所做的操作:
streetname.put("Sachin", "3");
streetname.put("Dravid", "2");
streetname.put("Sehwag", "1");
streetname.put("Laxman", "5");
streetname.put("Kohli", "4");提示:在map上迭代对你来说可能有点棘手,但通常是这样做的:
for (String key : streetno.keySet()) {
...
}祝你的家庭作业好运!
发布于 2018-02-12 23:46:24
Java8:
Map<String, String> streetname =
streetno.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));注意:
如果您想使用parellelstream()而不是stream(),请三思而行。只有当您的Map非常大时,这才是合适的。
https://stackoverflow.com/questions/9453880
复制相似问题