[英]Java : Get Data from Nested HashMap
Hi Folks i have looked at below mention question for answer but it was not helpful as they give answer for static value while i need to get value from dynamic approch 大家好,我看过下面提到的问题,但是这对我没有用,因为当我需要从动态方法中获取价值时,他们会给出静态值的答案。
How to put/get values into/from Nested HashMap 如何在嵌套HashMap中放入/获取值
Getting value from Nested HashMap into another Map 从嵌套HashMap获取价值到另一个地图
How do I access nested HashMaps in Java? 如何在Java中访问嵌套的HashMap?
This is my Scenario : 这是我的方案:
This is my class for adding and retrieving data from HashMap :- 这是我的类,用于从HashMap添加和检索数据:
HashMap<Integer, String> xmlQueryNode = new HashMap<Integer, String>();
HashMap<Integer, HashMap<Integer, String>> splunkHashMap = new HashMap<Integer, HashMap<Integer, String>>();
id = 0;
xmlQueryNode.put(0, "F0name");
xmlQueryNode.put(1, "L0name");
xmlQueryNode.put(2, "M0name");
splunkHashMap.put(id, xmlQueryNode);
id = 1;
xmlQueryNode.put(0, "F1name");
xmlQueryNode.put(1, "L1name");
xmlQueryNode.put(2, "M1name");
splunkHashMap.put(id, xmlQueryNode);
id = 2;
xmlQueryNode.put(0, "F2name");
xmlQueryNode.put(1, "L2name");
xmlQueryNode.put(2, "M2name");
splunkHashMap.put(id, xmlQueryNode);
id = 3;
xmlQueryNode.put(0, "F3name");
xmlQueryNode.put(1, "L3name");
xmlQueryNode.put(2, "M3name");
splunkHashMap.put(id, xmlQueryNode);
for (Integer key : splunkHashMap.keySet()) {
HashMap<Integer, String> temp = new HashMap<Integer, String>();
//System.out.println(key);
temp = otsdbQueryData.get(key);
for(Integer key1: temp.keySet()){
System.out.println(temp.get(key1));
}
}
Problem with this code is that i get below output for all 4 entries :- 这段代码的问题是我得到以下所有4个条目的输出:-
F3name
L3name
M3name
F3name
L3name
M3name
F3name
L3name
M3name
F3name
L3name
M3name
Can anyone point me where i am making mistake because My hashmaps are being overwritten by last inserted hashmap?? 谁能指出我在哪里出错,因为我的哈希图被最后插入的哈希图覆盖?
after put inner hashmap you need to reinitialise that map. 放入内部哈希图后,您需要重新初始化该图。
xmlQueryNode = new HashMap<Integer,String>();
xmlQueryNode.put(0, "F1name");
xmlQueryNode.put(1, "L1name");
xmlQueryNode.put(2, "M1name");
otherwise it will update the same reference. 否则它将更新相同的参考。
Please check the updated code. 请检查更新的代码。
int id =0;
HashMap<Integer, String> xmlQueryNode = new HashMap<Integer, String>();
HashMap<Integer, HashMap<Integer, String>> splunkHashMap = new HashMap<Integer, HashMap<Integer, String>>();
id = 0;
xmlQueryNode.put(0, "F0name");
xmlQueryNode.put(1, "L0name");
xmlQueryNode.put(2, "M0name");
splunkHashMap.put(id, xmlQueryNode);
xmlQueryNode = new HashMap<Integer, String>();
id = 1;
xmlQueryNode.put(0, "F1name");
xmlQueryNode.put(1, "L1name");
xmlQueryNode.put(2, "M1name");
splunkHashMap.put(id, xmlQueryNode);
xmlQueryNode = new HashMap<Integer, String>();
id = 2;
xmlQueryNode.put(0, "F2name");
xmlQueryNode.put(1, "L2name");
xmlQueryNode.put(2, "M2name");
splunkHashMap.put(id, xmlQueryNode);
xmlQueryNode = new HashMap<Integer, String>();
id = 3;
xmlQueryNode.put(0, "F3name");
xmlQueryNode.put(1, "L3name");
xmlQueryNode.put(2, "M3name");
splunkHashMap.put(id, xmlQueryNode);
for (Integer key : splunkHashMap.keySet()) {
HashMap<Integer, String> temp = new HashMap<Integer, String>();
//System.out.println(key);
temp = splunkHashMap.get(key);
for(Integer key1: temp.keySet()){
System.out.println(temp.get(key1));
}
}
xmlQueryNode reference is getting overwritten again and again. xmlQueryNode参考一次又一次被覆盖。 Check below code. 检查以下代码。
HashMap<Integer, String> xmlQueryNode = new HashMap<Integer, String>();
HashMap<Integer, HashMap<Integer, String>> splunkHashMap = new HashMap<Integer, HashMap<Integer, String>>();
id = 0;
xmlQueryNode.put(0, "F0name");
xmlQueryNode.put(1, "L0name");
xmlQueryNode.put(2, "M0name");
splunkHashMap.put(id, xmlQueryNode);
id = 1;
xmlQueryNode = new HashMap<Integer,String>();
xmlQueryNode.put(0, "F1name");
xmlQueryNode.put(1, "L1name");
xmlQueryNode.put(2, "M1name");
splunkHashMap.put(id, xmlQueryNode);
id = 2;
xmlQueryNode = new HashMap<Integer,String>();
xmlQueryNode.put(0, "F2name");
xmlQueryNode.put(1, "L2name");
xmlQueryNode.put(2, "M2name");
splunkHashMap.put(id, xmlQueryNode);
id = 3;
xmlQueryNode = new HashMap<Integer,String>();
xmlQueryNode.put(0, "F3name");
xmlQueryNode.put(1, "L3name");
xmlQueryNode.put(2, "M3name");
splunkHashMap.put(id, xmlQueryNode);
for (Integer key : splunkHashMap.keySet()) {
HashMap<Integer, String> temp = new HashMap<Integer, String>();
//System.out.println(key);
temp = otsdbQueryData.get(key);
for(Integer key1: temp.keySet()){
System.out.println(temp.get(key1));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.