首页 > 解决方案 > 如何使用 Java 8 流使用集合流式传输地图?

问题描述

我想使用 Java 8 流来流式传输带有集合的地图。

例如,有以下数据:

Map<String, Collection<Integer>> data;

我想用相应的键字符串来处理处理每个整数值的元素。例如:

data.keyValueStream((k,v)-> ...)

知道如何实现这一目标吗?谢谢。

* 关于“你为什么需要它?”这个问题,可能有很多原因,我不确定它是否重要。无论如何,我会和你一起“流动”......我的具体情况是批量插入数据库中的所有值,在它们的特定键下。让我们保持一个一般的 Java 8 流问题......

标签: javadictionaryjava-8java-streammultimap

解决方案


您可以将您的映射Map<String, Collection<Integer>>List<Map.Entry<String, Integer>>

data.entrySet().stream()
  .flatMap(e -> e.getValue().stream().map(v -> new HashMap.SimpleEntry<>(e.getKey(), v)))
  .forEach(e -> System.out.printf("key %s val %d%n", e.getKey(), e.getValue()));

或者:

data.forEach((k, v) -> v.forEach(n -> System.out.printf("key %s val %d%n", k, n)));

推荐阅读