使用for循环向arraylist添加新对象将始终添加最后一个对象

时间:2013-04-21 11:24:03

标签: java list loops

这只是我代码的基本表示:

所以我的循环会生成一堆散列图,每个散列图的关键字为“x”,值等于i。每次传递后,地图都会被添加到列表中。

List<HashMap> list = new ArrayList<HashMap>();
for (int i = 1; i <= counter; i++) {
    HashMap map = new HashMap();
    map.put("x", i);

    list.add(new HashMap(map));
}

所以,如果我打印出我的清单,如果counter = 5 :(我期待1 2 3 4 5)

1
5
5
5
5

我怀疑是某种引用错误?如果是这样,为什么第一个值1而不是5?

编辑:打印代码没有问题。我将每个地图打印到控制台,然后将其添加到列表中,并且所有地图看起来都很好。

然后当我打印列表时......它们都显示相同的值。

1 个答案:

答案 0 :(得分:1)

ArrayList <HashMap<String, Integer>> list = new ArrayList<HashMap<String,Integer>>();
    int counter =5;
    for (int i = 1; i<=counter;i++){

         HashMap<String, Integer> map = new HashMap<String, Integer>();
         map.put("x", i);
         list.add(map);
    }

    System.out.println(list);

直接从控制台

enter image description here