1

我正在尝试将哈希图添加到数组列表中。但是当我尝试向 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=Number:0}[{KEY_NAME=Number:0}]
{KEY_NAME=Number:1}[{KEY_NAME=Number:1}, {KEY_NAME=Number:1}]
{KEY_NAME=Number:2}[{KEY_NAME =编号:2},{KEY_NAME=编号:2},{KEY_NAME=编号:2}]
[{KEY_NAME=编号:2},{KEY_NAME=编号:2},{KEY_NAME=编号:2}]

但我希望输出是这样的

{KEY_NAME=Number:0}[{KEY_NAME=Number:0}]
{KEY_NAME=Number:1}[{KEY_NAME=Number:0}, {KEY_NAME=Number:1}]
{KEY_NAME=Number:2}[{KEY_NAME =编号:0},{KEY_NAME=编号:1},{KEY_NAME=编号:2}]
[{KEY_NAME=编号:0},{KEY_NAME=编号:1},{KEY_NAME=编号:2}]

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

4

1 回答 1

2

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

于 2013-04-04T20:18:21.903 回答