我正在努力向String
添加String
密钥和hashmap1
值。反过来,我还必须将hashmap1
添加到另一个hashmap2
作为其键为String
的值。
不知何故,hashmap1
将覆盖所有具有最后添加值的键的值。如何解决此问题以获取包含我添加的所有值对的hashmap1
。 Al
是ArrayList
,其中包含我要添加到hashmap1
的值。
al.add("def");
al.add("xyz");
al.add("pqr");
al.add("mno");
for(int i=0; i<al.size();i++){
map.put("positionTitle", al.get(i).toString());
System.out.println(map.get("positionTitle"));
positionTitles.put(String.valueOf(i), map);
System.out.println("Value in the position title while in the loop "+positionTitles.get(String.valueOf(i)).get("positionTitle"));
}
for(String s: positionTitles.keySet()){
System.out.println("key in the position title:" +s);
for(String a: positionTitles.get(s).keySet()){
System.out.println("Keys in the map in the position title "+a);
System.out.println("Values in the map in position title "+positionTitles.get(s).get(a));
}
}
输出:
[abc,def,xyz,pqr,mno]
ABC
循环abc中位置标题的值
DEF
循环def中位置标题的值
XYZ
循环xyz中位置标题的值
PQR
循环pqr中位置标题的值
MNO
在循环mno中位置标题中的值
键位置标题:0
位置标题positionTitle
中地图中的键地图中位置标题为mno的值
键位置标题:1
位置标题positionTitle
中地图中的键地图中位置标题为mno的值
键位置标题:2
位置标题positionTitle
中地图中的键地图中位置标题为mno的值
键位置标题:3
位置标题positionTitle
中地图中的键地图中位置标题为mno的值
键位置标题:4
位置标题positionTitle
中地图中的键地图中位置标题为mno的值
答案 0 :(得分:0)
你的问题是&#34;地图&#34;变量被重用。
map.put("positionTitle", al.get(i).toString());
positionTitles.put(String.valueOf(i), map);
每次在同一个散列映射中为同一个键设置一个新值,然后在第二个映射中为不同的键存储相同的对象。因此基本上覆盖了你在每个循环中所做的事情。 要解决您的问题,您需要为每个循环创建一个新的hashmap对象或使用不同的键。 既然你谈到嵌套的哈希图,我想你想要做的是:
map = new HashMap();
map.put("positionTitle", al.get(i).toString());
positionTitles.put(String.valueOf(i), map);
我不知道为什么你想要做到这一点,但祝你好运。