我是初学者,我想通过使用两个旧映射hm1和hm2创建一个新映射hm3,在该映射中,我需要第二个映射的值作为键,第一个映射的值作为值,例如:如果映射hm1包含a1作为key1和abc作为value1,它还包含a2作为key2和xyz作为value2,并且还有另一个映射hm2,它包含a1作为key1和b1作为value1,还包含a2作为key2和b2作为value2,那么在映射hm3中,我需要b1作为key1和abc作为value1,而b2则需要key2和xyz作为value2
public class MapInterchange {
public static void main(String[] args) {
HashMap<String, String> hm1 = new HashMap<String, String>();
Map.Entry m1;
hm1.put("a1", "abc");
hm1.put("a2", "xyz");
for (Map.Entry m : hm1.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
HashMap<String, String> hm2 = new HashMap<String, String>();
hm2.put("a1", "b1");
hm2.put("a2", "b2");
for (Map.Entry m : hm2.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
HashMap<Object, Object> hm3 = new HashMap<Object, Object>();
Iterator itr = ((Set<Entry<String, String>>) hm1).iterator();
while (itr.hasNext()) {
hm3.put(((Entry) hm2).getValue(), ((Entry) hm1).getValue());
}
for (Map.Entry m : hm3.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
}
}
}
The exception I'm getting is : Exception in thread "main" java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.Set
at com.sid.MapInterchange.main(MapInterchange.java:34)
请提供更正的代码,我将非常感谢
不能将HashMap强制转换为一组条目。使用entryset
方法。
Iterator<Map.Entry<String,String>> itr = hm1.entrySet().iterator();
while (itr.hasNext()) {
Map.Entry<String,String> entry = itr.next();
hm3.put(entry.getKey(), entry.getValue());
}
编辑:我不确定这段代码能做你想做的事情,但它克服了你的错误。不清楚你想交换什么。
如果值的映射是基于键的,那么代码应该是:
Iterator<Map.Entry<String,String>> itr = hm1.entrySet().iterator();
while (itr.hasNext()) {
Map.Entry<String,String> entry = itr.next();
hm3.put(hm2.get(entry.getKey()), entry.getValue());
}
我有两个地图,键为整数,值为双倍。 我想创建第三个按键排序的映射,值将是两个映射的双精度列表。 地图1: Map2: 最终地图: 如上所述,如果一个地图中的一个键在另一个地图中丢失,则另一个地图的最终地图中的值应默认为0.00 我可以使用putAll方法将所有键放入第三张地图。但如何按照我的意愿设定这些值呢? 感谢阅读!
我有一些代码需要帮助...我正在尝试使用两个地图作为源并同时使用java lambdas构建地图 我可以用你们在上面看到的foreach做到这一点,但我试图用lambdas做到这一点。。。像这样的 我想要的输出是这样的 但我无法理解
问题内容: 我正在尝试了解go的内部原理。考虑以下代码 上面的代码完美地交换了2个数字,a变成5,b变成10。我无法理解它是如何工作的。在第二行代码中考虑,如果将a首先分配给b,则b将为10。现在,如果将b分配给a,那么a也不应也为10。 请帮助我了解它是如何工作的 谢谢 问题答案: TL; DR :反汇编表明CPU必须足够聪明才能看到正在发生的事情,并使用寄存器来避免覆盖内存中的现有值。 这个问
我想将我的应用程序迁移到Spring Boot Jar部署。它目前使用没有启动的Spring4。 我在上有一个REST-API侦听器,在上有一个JavaScript-fronten,可以在上访问。 现在我找不到在靴子里做同样的事情的方法。 通过更改属性,我设法在处获得了api监听,但是我没有在处注册第二个servlet来为我的js-frontend服务。我知道jar部署不支持,我还知道Spring
问题内容: 我需要将两个表映射到一个类,但很难弄清楚。一个表是ROOMS,另一个表是TRAINERS。 ROOMS表: 培训人员表: 表应当加入了,和。 ROOMS表的主键是:。TRAINERS表的主键是:。 我需要通过查询这个数据,,,,和。 在SQL中,可能类似于: 我正在项目中其他地方使用ROOMS表,它已经映射为独立对象。是否有一种方法可以将其用作TRAINERS对象的子对象,或者将这两个