2015-11-05 51 views
0

我试图从一个HashMap中的一个HashMap中得到一定的值:获得一个HashMap中从一个HashMap信息

outermap是HashMap<String,HashMap<String,String>>型的,其包含以下内容:

{ 
    "9000": { 
     "property": "Art", 
     "general": "no", 
     "finished": "yes" 
    }, 
    "10503": { 
     "property": "Art", 
     "general": "no", 
     "finished": "no" 
    }, 
    "16792": { 
     "property": "Art", 
     "general": "no", 
     "finished": "yes" 
    } 
} 

和我希望能够确定内部HashMap的“完成”键是否具有“是”的值

您能否帮助我试图提取此信息?难以发现......

这可能是由于我对如何迭代多个hashmaps有点困惑,我应该为内部映射填充另一个hashmap吗?然后迭代通过?

对不起,如果这没有意义...我可以尝试澄清,如果是这样。任何帮助将非常感激。

+0

你写什么代码来获取所需的关键?有没有错误? – FelisCatus

回答

0
Map <String, HashMap <String, String>> outerMap; 

outerMap.get("16792").get("finished"); 
1

尝试outerMap.get("9000").get("finished")

有遍历地图的几种方法,最常见的方式是通过获取其中的keySet

for (String outerMapKey : outerMap.keySet()) { 
    System.out.println(outerMap.get(outerMapKey).get("finished"));   
} 
0

首先,你可以字符串转换成地图>使用jsonutils。 二,过程。

Map<String,Map<String,String>> map = new ObjectMapper().readValue(str,Map.class); 

    for (String key : map.keySet()){ 
     Map<String,String> innerMap = map.get(key); 
     if(StringUtils.equals(innerMap.get("finished"),"true")){ 
      System.out.println("finished is true ,key is " + key); 
     } 
    } 
0
// create dummy data set 
    Map<String, Map<String, String>> data = new HashMap<>(); 
    Map<String, String> item = new HashMap<>(); 
    item.put("property", "Art"); 
    item.put("general", "no"); 
    item.put("finished", "yes"); 
    data.put("9000", item); 

    item = new HashMap<>(); 
    item.put("property", "Art"); 
    item.put("general", "no"); 
    item.put("finished", "no"); 
    data.put("10503", item); 

    item = new HashMap<>(); 
    item.put("property", "Art"); 
    item.put("general", "no"); 
    item.put("finished", "yes"); 
    data.put("16792", item); 
    // end dummy data set 

    // iterate to find the desired item 
    for (String key : data.keySet()) { 
     Map<String, String> items = data.get(key); 
     if (items.containsKey("finished") && "yes".equals(items.get("finished"))) { 
      System.out.println(key); 
     } 
    }