Java 使用现有Hashmap创建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
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)。