如何从集合中提取Map值

时间:2018-05-31 05:40:54

标签: java

我的地图位于key = value对下方,现在如何从集{}中获取GCO值?

MAP : {containerIdentifier={ID=null, dto=null, GCO=123, version=1}, containerEditable=true}

代码:

        for (Entry<String, Object> entry : map.entrySet())
System.out.println("Key = " + entry.getKey() +", Value = " + entry.getValue());

输出:

Key = containerIdentifier, Value = {ID =null, dto=null, GCO=123, version=1}
Key = containerEditable, Value = true

如何从价值中获得唯一的GCO 123?

2 个答案:

答案 0 :(得分:2)

您必须检查原始Map的值何时也是Map。然后,您可以将其转换为Map并查找内部Map中特定键的值:

for (Entry<String, Object> entry : map.entrySet()) {
    if (entry.getValue() instanceof Map) {
        Map innermap = (Map) entry.getValue();
        System.out.println(innermap.get("GCO"));
    }
}

这假设原始Map的值并非始终为Map(并考虑样本Map中的第二个条目,其值为Boolean,那个假设是正确的。)

答案 1 :(得分:1)

您可以使用java steam api。

map.values().stream()
            .flatMap(innerMaps -> innerMaps.entrySet().stream())
            .filter(entry-> "GCO".equals(entry.getKey()))
            .map(Map.Entry::getValue)
            .findAny().orElse("not found")