Java 使用现有Hashmap创建Hashmap

Java 使用现有Hashmap创建Hashmap,java,hashmap,Java,Hashmap,我创建了一个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"); Map<Str

我创建了一个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");
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");
Map streetno=newhashmap();
put街(“3”、“Sachin”);
街道编号put(“2”,“Dravid”);
街号put(“1”、“Sehwag”);
街号put(“5”、“Laxman”);
put街(“4”、“Kohli”);
现在我想创建一个新的hashmap,上面hashmap的key变成value,value变成key,如下所示:

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");
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");
Map streetname=new HashMap();
街道名称.put(“Sachin”,“3”);
街道名称.put(“Dravid”,“2”);
街道名称.put(“Sehwag”,“1”);
街道名称.put(“Laxman”,“5”);
街道名称.put(“Kohli”,“4”);
我不知道怎么做。。有人能帮我解决这个问题吗..

Map streetname=new HashMap();
Map<String, String> streetname = new HashMap<String, String>();

for (Entry<String,String> e : streetno.entrySet()) {
  streetname.put(e.getValue(), e.getKey());
}
对于(条目e:streetno.entrySet()){ streetname.put(e.getValue(),e.getKey()); }
这里,for循环对原始映射中的所有条目(即键/值对)进行迭代,并将它们插入到第二个映射中,同时交换键和值

最好检查
put()
是否返回
null
。如果您得到非空值,这意味着
streetno
中的值不是唯一的。既然这是家庭作业,我就把它留给你们去弄清楚后果,以及如何最好地处理它。

Map streetname=new HashMap();
对于(条目e:streetno.entrySet()){
streetname.put(e.getValue(),e.getKey());
}
这里,for循环对原始映射中的所有条目(即键/值对)进行迭代,并将它们插入到第二个映射中,同时交换键和值


最好检查
put()
是否返回
null
。如果您得到非空值,这意味着
streetno
中的值不是唯一的。既然这是家庭作业,我就把它留给你去弄清楚后果,以及如何最好地处理它。

太好了,你就快到了。现在,您需要迭代第一个哈希映射键,并模拟在这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()) {
...
}

祝你的家庭作业好运

太好了,你就快到了。现在,您需要迭代第一个哈希映射键,并模拟在这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()) {
...
}

祝你的家庭作业好运

Java8:

Map<String, String> streetname = 
    streetno.entrySet()
            .stream()
            .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
地图街道名称=
街道编号入口集()
.stream()
.collect(Collectors.toMap(Map.Entry::getValue,Map.Entry::getKey));
注:


如果您试图使用
parellStream()
而不是
stream()
请三思。只有当您的
映射非常大时,这才合适。

Java8:

Map<String, String> streetname = 
    streetno.entrySet()
            .stream()
            .collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey));
地图街道名称=
街道编号入口集()
.stream()
.collect(Collectors.toMap(Map.Entry::getValue,Map.Entry::getKey));
注:


如果您试图使用
parellStream()
而不是
stream()
请三思。只有当你的
地图
非常大时,这才合适。

啊,我不喜欢有人只是解决作业。帮一点忙,但不要做所有的工作。毕竟这是家庭作业,所以学生会在其中付出一些努力。我希望你最初的价值观是独一无二的;否则你就失去了数据啊,我不喜欢有人只是解决家庭作业。帮一点忙,但不要做所有的工作。毕竟这是家庭作业,所以学生会在其中付出一些努力。我希望你最初的价值观是独一无二的;否则您将失去数据请注意,google collections api guava支持BiMap的概念,该BiMap支持一个
inverse()
操作来实现这一点。这样做很有用,无需复制数据。有关api详细信息,请参阅google collections api guava支持BiMap的概念,该BiMap支持
inverse()
操作来实现这一点。这样做很有用,无需复制数据。查看api详细信息我没有否决你,但是。。。也许下一个投票人冒犯了
streetno.keySet()
你真的应该使用
streetno.entrySet()
,否则你必须再次访问地图才能获得值。这是真的,可能会稍微慢一点,但我认为这对于家庭作业来说已经足够了。我想避开
入口集
,因为我担心我会把学生弄糊涂(我不知道他的专业水平)。即使用我的解决方案,复杂性仍然是O(n)。我没有投你反对票,但是。。。也许下一个投票人冒犯了
streetno.keySet()
你真的应该使用
streetno.entrySet()
,否则你必须再次访问地图才能获得值。这是真的,可能会稍微慢一点,但我认为这对于家庭作业来说已经足够了。我想避开
入口集
,因为我担心我会把学生弄糊涂(我不知道他的专业水平)。即使使用我的解决方案,复杂性仍然是O(n)。