简体   繁体   English

Java:从嵌套HashMap获取数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM