[英]How to pass an inner hashMap with same keys inside an outer hashMap with different keys?
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;
}
In this case, I am getting only the last set, all data are getting overridden, can anyone help me to figure out how can I pass data in the format like below?在这种情况下,我只得到最后一组数据,所有数据都被覆盖了,谁能帮我弄清楚如何以如下格式传递数据?
{Key="File1", value={'a'=10,'b'=5}}
{Key="File1", value={'a'=10,'b'=5}}
And so on.等等。
You need to assign a new HashMap
instance to valueFromEachOfThoseNineFields
every time you want to store values into it and subsequently storing valueFromEachOfThoseNineFields
into fileNameConstrains
as follows:每次要将值存储到
valueFromEachOfThoseNineFields
,然后将valueFromEachOfThoseNineFields
存储到fileNameConstrains
时,您都需要为valueFromEachOfThoseNineFields
分配一个新的HashMap
实例,如下所示:
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
System.out.println(getDataDictionary());
}
public static HashMap<String, HashMap<String, Object>> getDataDictionary() {
// Virtual Data Creation - Simulating The 9 Fields HAR value
HashMap<String, Object> valueFromEachOfThoseNineFields;
HashMap<String, HashMap<String, Object>> fileNameConstrains = new HashMap<String, HashMap<String, Object>>();
valueFromEachOfThoseNineFields = new 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 = new HashMap<String, Object>();
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 = new HashMap<String, Object>();
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;
}
}
Output:输出:
{File3={A=10, B=60, C=30, D=2, E=13, F=9, G=15, H=88, I=69}, File2={A=10, B=50, C=30, D=90, E=5, F=20, G=10, H=90, I=61}, File1={A=10, B=20, C=30, D=10, E=5, F=20, G=1, H=100, I=66}}
the reason why your data get overridden because you use the same key in the inner map as the documentations says the key for the map should be unique您的数据被覆盖的原因是因为您在内部地图中使用与文档相同的键,说明地图的键应该是唯一的
so to solve your issue here you have to reinstate the map on every new file所以要在这里解决您的问题,您必须在每个新文件上恢复地图
HashMap<String,Object> Map1 = new HashMap<>();
HashMap<String, HashMap<String,Object>> fileNameConstrains = new HashMap<>();
Map1.put("A", 10);
Map1.put("B", 20);
fileNameConstrains.put("File1", Map1);
Map1 = new HashMap<String,Object>();
Map1.put("A", 10);
Map1.put("B", 50);
fileNameConstrains.put("File2", Map1);
Map1 = new HashMap<String,Object>();
Map1.put("A", 10);
Map1.put("B", 60);
fileNameConstrains.put("File3", Map1);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.