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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有什么方法可以提取Map的值吗?相关的知识,希望对你有一定的参考价值。

我试图从下面的数据类型中提取值。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?

答案

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

Map<String, Integer> output = map.values().stream()
        .flatMap(m -> m.entrySet().stream())
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
另一答案

简单的方式就是。

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

或者

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

以上是关于有什么方法可以提取Map的值吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用基于范围的 for 循环轻松迭代地图的值吗?

您可以从 IBM PHD java 堆转储中提取字符串的值吗?

React 组件有啥方法可以保持之前渲染的值吗? [复制]

java list能赋空值吗

RSpec 存根方法可以按顺序返回不同的值吗?

iOS Firestore 可以将 `FieldValue.increment` 用于 Map 值吗?