添加到hashmap和arraylist

时间:2013-04-04 20:14:31

标签: java map arraylist hashmap

我正在尝试将哈希映射添加到数组列表中。 但是当我尝试向arraylist(listOfCompleteEntries)添加多个值时,map(completeEntrie)会覆盖以前的值

public class MapExample {

    public static void main(String a[]) {
        ArrayList listOfCompleteEntries = new ArrayList();
        Map<String, String> completeEntrie = new HashMap<String, String>();

        for (int i = 0; i < 3; i++) {

            completeEntrie.put("KEY_NAME", "Number:" + i);
            System.out.print(completeEntrie.toString());
            listOfCompleteEntries.add(completeEntrie);
            System.out.println(listOfCompleteEntries.toString());
        }
        System.out.println(listOfCompleteEntries.toString());
    }
}

上述代码的输出为

  

{KEY_NAME =数:0} [{KEY_NAME =数:0}]
  {KEY_NAME =数字:1} [{KEY_NAME =数字:1},{KEY_NAME =数字:1}]
  {KEY_NAME =数字:2} [{KEY_NAME =数字:2},{KEY_NAME =数字:2},{KEY_NAME =数字:2}]
  [{KEY_NAME =数字:2},{KEY_NAME =数字:2},{KEY_NAME =数字:2}]

但我希望输出像这样

  

{KEY_NAME =数:0} [{KEY_NAME =数:0}]
  {KEY_NAME =数字:1} [{KEY_NAME =数字:0},{KEY_NAME =数字:1}]
  {KEY_NAME =数字:2} [{KEY_NAME =数字:0},{KEY_NAME =数字:1},{KEY_NAME =数字:2}]
  [{KEY_NAME =数字:0},{KEY_NAME =数字:1},{KEY_NAME =数字:2}]

另外请解释为什么这张地图会覆盖arraylist中的上一张地图。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

尽管标题不相关,但您需要为要添加到数组列表的每个唯一条目构造一个新的映射实例。如果没有这个,您将修改相同的地图实例。