[英]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;
}
在这种情况下,我只得到最后一组数据,所有数据都被覆盖了,谁能帮我弄清楚如何以如下格式传递数据?
{Key="File1", value={'a'=10,'b'=5}}
等等。
每次要将值存储到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;
}
}
输出:
{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}}
您的数据被覆盖的原因是因为您在内部地图中使用与文档相同的键,说明地图的键应该是唯一的
所以要在这里解决您的问题,您必须在每个新文件上恢复地图
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.