从yaml文件中检索嵌套的Hashmap数据

时间:2012-06-05 07:54:23

标签: java hashmap yaml

我有以下yaml数据

networkLayerConfig: 
    eventMap: !!map
      !!int 100 : 
        !!int 1 : IDLING
        !!int 2 : ACCEPTING

我使用yamlbean将此数据读取到以下类

class NetworkLayerConfig {
    private HashMap<Integer, Map<Integer, String>> eventMap;
}

我尝试访问每个密钥及其关联的值对。

如果我在java类本身声明它时尝试访问这些数据,如

myHashMap = new HashMap<Integer, Map<Integer, String>>();
myHashMap.put(100, new HashMap<Integer, String>());
myHashMap.get(100).put(1, "IDLING");
myHashMap.get(100).put(2, "ACCEPTING");

使用以下代码

for (Map.Entry<Integer, String> oneMap : myHashMap.get(100).entrySet()) {
    System.out.println(oneMap.getKey());
    System.out.println(oneMap.getValue());
}

因为我必须仅从yaml文件中读取值100(即,在运行时),我不知道如何访问每个数据。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,以访问hashmap中的每个值

Iterator<?> iterator = myparentHashMap.entrySet().iterator();
        while (iterator.hasNext()) {
            Entry myEntry = (Entry) iterator.next();
            System.out.println(myEntry.getKey() + " : ");
            HashMap<Integer, String> childHashMaps = ((HashMap<Integer, String>) myEntry.getValue());
            System.out.println("{");
            for (Map.Entry<Integer, String> childHashMap : childHashMaps.entrySet()) {
                System.out.print(childHashMap.getKey() + " : ");
                System.out.println(childHashMap.getValue());
            }
            System.out.println("}");
        }