Java : Get Data from Nested HashMap

标签 java hashmap

大家好,我已经查看了下面提到的问题以寻求答案,但这没有帮助,因为他们给出了静态值的答案,而我需要从动态方法中获取值

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/

相关文章:

java - 两个 Java 运算符之间的区别 : ! = vs !equals

java - 解析 XML 并将数据设置到 Model 类

java - 如何在javaFX中创建自定义光标?

java - 为什么这段代码有时会抛出 NullPointerException?

Java 字符串 : Is hashcode actually the hashvalue?

java - 如何在 Java 中将 Map<String, Set<String>> 转换为 Map<String, String[]>

java - 5.2 中的 spring AnnotationUtils 不再搜索父类?

java - 我怎样才能为我的 webapps 中的一个文件夹打开列表,而不是为每个文件夹打开列表

java - 返回错误的百分比

java - 如何断言数组的 Java Hashmap?