Hashmap未显示以前添加的字符串

时间:2014-10-03 22:33:16

标签: java string hashmap

我正在努力向String添加String密钥和hashmap1值。反过来,我还必须将hashmap1添加到另一个hashmap2作为其键为String的值。

不知何故,hashmap1将覆盖所有具有最后添加值的键的值。如何解决此问题以获取包含我添加的所有值对的hashmap1AlArrayList,其中包含我要添加到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的值

1 个答案:

答案 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);

我不知道为什么你想要做到这一点,但祝你好运。