Java ArrayList of Map - 所有Map对象都是dupe

0 java arraylist map

我有一个Map对象,每次更新地图时,其值都会不断变化.它们的键始终相同,但值会发生变化.每次我更改Map对象时,我都会将它添加到ArrayList中.我可以看到每次将新映射添加到ArrayList时映射中的值都不同,但是当ArrayList完成更新并准备好读取时,其中的所有Map都是相同的.

任何人都可以想到为什么会这样吗?

这基本上就是发生的一切......使用新的Map调用UpdateLog约20次,每个dataMap1对象都不同.它被添加到ArrayList中.当我调试时,我可以看到每次dataMap1值都不同.但是当它完成时,mapLog中的每个dataMap1对象都是一样的!!

public void UpdateLog(final Map<String,String> dataMap1)
Run Code Online (Sandbox Code Playgroud)

{

mapLog.add(dataMap1);    
Run Code Online (Sandbox Code Playgroud)

}

Jon*_*eet 5

声称每个dataMap1对象都是不同的......但是不要忘记它的值dataMap1只是一个引用,而不是一个对象.如果你这样做:

Map<String, String> map = new HashMap<String, String>();

map.put("a", "b");
UpdateLog(map);

map.clear();
map.put("x", "y");
UpdateLog(map);
Run Code Online (Sandbox Code Playgroud)

实际上并没有使用两个不同的对象.确保每次都有一个不同的对象:

// Replaces the call to map.clear()
map = new HashMap<String, String>();
map.put("x", "y");
UpdateLog(map);
Run Code Online (Sandbox Code Playgroud)

如果这没有帮助,请发布更多代码.鉴于你的描述,这就是正在发生的事情.当然,您可能希望复制地图,而不是每次都创建新地图.

  • AAArgh,打败了我!:) (3认同)