有什么方法可以提取Map的值吗?

我试图从下面的数据类型中提取值。Map<String, Map<String, Integer>>, 样本数据是这样的。

("aaa"。 地图("bbb",333)) ("ddd", Map("ccc",444))

我想要的结果

HashMap 
key : bbb, value : 333 
key : ccc, value : 444

我试过了

mapData.values().stream()
       .collect(Collectors.toMap(Map.Entry::getKey,Map.Entry::getValue))

但却失败了。有没有什么好的方法可以在嵌套的Map中提取value部分。Map?

4
投票

你需要 flatMap 您的内部地图的条目 -

Map<String, Integer> output = map.values().stream()
        .flatMap(m -> m.entrySet().stream())
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
1
投票

简单的方式就是。

Map<String,Integer> map = new HashMap<>();
mapData.values().forEach(map::putAll);

或者

mapData.values().stream().collect(HashMap::new, HashMap::putAll,Map::putAll);