【发布时间】:2020-01-11 22:40:59
【问题描述】:
public static HashMap<String, HashMap<String,Object>> getDataDictionary() {
// Virtual Data Creation - Simulating The 9 Fields HAR value
HashMap<String,Object> valueFromEachOfThoseNineFields = new HashMap<String,Object>();
HashMap<String, HashMap<String,Object>> fileNameConstrains = new HashMap<String,HashMap<String,Object>>();
valueFromEachOfThoseNineFields.put("A", 10);
valueFromEachOfThoseNineFields.put("B", 20);
valueFromEachOfThoseNineFields.put("C", 30);
valueFromEachOfThoseNineFields.put("D", 10);
valueFromEachOfThoseNineFields.put("E", 5);
valueFromEachOfThoseNineFields.put("F", 20);
valueFromEachOfThoseNineFields.put("G", 1);
valueFromEachOfThoseNineFields.put("H", 100);
valueFromEachOfThoseNineFields.put("I", 66);
fileNameConstrains.put("File1", valueFromEachOfThoseNineFields);
valueFromEachOfThoseNineFields.put("A", 10);
valueFromEachOfThoseNineFields.put("B", 50);
valueFromEachOfThoseNineFields.put("C", 30);
valueFromEachOfThoseNineFields.put("D", 90);
valueFromEachOfThoseNineFields.put("E", 5);
valueFromEachOfThoseNineFields.put("F", 20);
valueFromEachOfThoseNineFields.put("G", 10);
valueFromEachOfThoseNineFields.put("H", 90);
valueFromEachOfThoseNineFields.put("I", 61);
fileNameConstrains.put("File2", valueFromEachOfThoseNineFields);
valueFromEachOfThoseNineFields.put("A", 10);
valueFromEachOfThoseNineFields.put("B", 60);
valueFromEachOfThoseNineFields.put("C", 30);
valueFromEachOfThoseNineFields.put("D", 2);
valueFromEachOfThoseNineFields.put("E", 13);
valueFromEachOfThoseNineFields.put("F", 9);
valueFromEachOfThoseNineFields.put("G", 15);
valueFromEachOfThoseNineFields.put("H", 88);
valueFromEachOfThoseNineFields.put("I", 69);
fileNameConstrains.put("File3", valueFromEachOfThoseNineFields);
return fileNameConstrains;
}
在这种情况下,我只得到最后一组,所有数据都被覆盖,谁能帮我弄清楚如何以如下格式传递数据?
{Key="File1", value={'a'=10,'b'=5}}
等等。
【问题讨论】:
-
fileNameConstrains 映射的所有键都指向同一个映射对象。因此,为一个键更改映射将反映在共享该对象的所有键的值中。如果不需要,您需要为每个键声明一个新映射。
-
您在
fileNameConstrains中添加valueFromEachOfThoseNineFields作为值。然后您对valueFromEachOfThoseNineFields进行更改,这会更改fileNameConstrains内部的状态,因为它仍然是相同的HashMap。将其添加到外部映射后,您需要使用valueFromEachOfThoseNineFields = new HashMap<String,Object>();创建一个new HashMap。
标签: java data-structures collections