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

问题描述 投票:0回答:1

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

  1. ("aaa"。地图("bbb",333))
  2. ("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?

java-8 hashmap
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.