大家好,我已经查看了下面提到的问题以寻求答案,但这没有帮助,因为他们给出了静态值的答案,而我需要从动态方法中获取值
How to put/get values into/from Nested HashMap
Getting value from Nested HashMap into another Map
How do I access nested HashMaps in Java?
这是我的场景:
这是我用于从 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));
}
}
此代码的问题是我得到的所有 4 个条目的输出均低于:-
F3name
L3name
M3name
F3name
L3name
M3name
F3name
L3name
M3name
F3name
L3name
M3name
任何人都可以指出我在哪里犯了错误,因为我的 HashMap 被最后插入的 HashMap 覆盖了?
最佳答案
放置内部 HashMap 后,您需要重新初始化该映射。
xmlQueryNode = new HashMap<Integer,String>();
xmlQueryNode.put(0, "F1name");
xmlQueryNode.put(1, "L1name");
xmlQueryNode.put(2, "M1name");
否则它将更新相同的引用。
请检查更新后的代码。
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));
}
}
关于Java : Get Data from Nested HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32820812/