0

我正在使用以下代码将 hashmap 内容保存到 arraylist 中。

HashMap jediSaber = new HashMap();  
ArrayList<HashMap> valuesList = new ArrayList();

for(int i = 0; i< 4;i++) {
    jediSaber.put("white","white_name"+i);  
    jediSaber.put("blue","blue_name"+i);   
    valuesList.add(i, jediSaber);           
    System.out.println("list ontent:"+i+":"+valuesList.get(i).values());
}

    `   

输出如下:

              list content:0:[blue_name0, white_name0]
              list content:1:[blue_name1, white_name1]
              list content:2:[blue_name2, white_name2]
              list content:3:[blue_name3, white_name3]

当我尝试使用以下代码在外部显示 arraylist 的内容时,

System.out.println("list content:");
for(int i = 0;i<valuesList.size();i++){ 
    System.out.println("list:"+i+":"+valuesList.get(i).values());
}

它显示以下输出,

             list content:0:[blue_name3, white_name3]
             list content:1:[blue_name3, white_name3]
             list content:2:[blue_name3, white_name3]
             list content:3:[blue_name3, white_name3]

我的问题是我需要显示 hashmap 的arraylist 的内容。

我想我在第二部分错过了一些东西。谁能帮我解决这个小问题?

提前致谢!!..

4

3 回答 3

1

这是HashMap每次添加相同的ArrayList

valuesList.add(i, jediSaber);

HashMap每次在 中创建一个新的for并添加它:

List<HashMap<String, String>> valuesList =
    new ArrayList<HashMap<String, String>>();

for (int i = 0; i < 4; i++)
{
    HashMap<String, String> m = new HashMap<String, String>();
    m.put("white", "white_name" + i);
    m.put("blue",  "blue_name"  + i);
    valuesList.add(m);
}

System.out.println(valuesList.toString());
于 2012-10-03T08:38:03.697 回答
0

尝试拉jediSaberfor循环,如下所示:

for(int i = 0; i < 4; i++) {
    Map<String, String> jediSaber = new HashMap<String, String>();

您还应该参数化valuesList

List<Map<String, String>> valuesList = new ArrayList<Map<String, String>>();

PS 无需add(i, jediSaber)使用 index 参数调用:valuesList.add(jediSaber)将具有相同的效果。

于 2012-10-03T08:43:42.463 回答
0
        List<Map> valuesList = new ArrayList();
        for (int i = 0; i < 4; i++) {
            Map<Object, Object> jediSaber = new HashMap<>();
            jediSaber.put("white", "white_name" + i);
            jediSaber.put("blue", "blue_name" + i);
            valuesList.add(jediSaber);
            Set<Entry<Object, Object>> entrySet = jediSaber.entrySet();
            for (Entry<Object, Object> entry : entrySet) {
                System.out.println(entry.getKey() + "-" + entry.getValue());
            }
        }
于 2012-10-03T08:48:37.050 回答