首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用现有Hashmap创建hashmap

使用现有Hashmap创建hashmap
EN

Stack Overflow用户
提问于 2012-02-26 22:25:08
回答 3查看 1.3K关注 0票数 0

我创建了一个hashmap,如下所示:

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
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");

我不知道该怎么做..有人能帮我解决这个问题吗..

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-26 22:26:51

代码语言:javascript
复制
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中的值不是唯一的。因为这是家庭作业,所以我留给你来弄清楚后果,以及如何最好地处理这件事。

票数 4
EN

Stack Overflow用户

发布于 2012-02-26 22:28:20

太好了,你就快到了。现在,您需要迭代第一个散列映射键,并模拟您在这5行中所做的操作:

代码语言:javascript
复制
streetname.put("Sachin", "3");
streetname.put("Dravid", "2");
streetname.put("Sehwag", "1");
streetname.put("Laxman", "5");
streetname.put("Kohli", "4");

提示:在map上迭代对你来说可能有点棘手,但通常是这样做的:

代码语言:javascript
复制
for (String key : streetno.keySet()) {
...
}

祝你的家庭作业好运!

票数 2
EN

Stack Overflow用户

发布于 2018-02-12 23:46:24

Java8:

代码语言:javascript
复制
Map<String, String> streetname = 
    streetno.entrySet()
            .stream()
            .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));

注意:

如果您想使用parellelstream()而不是stream(),请三思而行。只有当您的Map非常大时,这才是合适的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9453880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档