如何使用Java 8流使用集合流式传输地图?

Ali*_*aka -3 java dictionary multimap java-8 java-stream

我想使用Java 8流来收集带有集合的地图.

例如,拥有以下数据:

Map<String, Collection<Integer>> data;
Run Code Online (Sandbox Code Playgroud)

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

data.keyValueStream((k,v)-> ...)
Run Code Online (Sandbox Code Playgroud)

知道怎么做到这一点?谢谢.

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

Ada*_*ion 5

您可以将您的地图映射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()));
Run Code Online (Sandbox Code Playgroud)

要么:

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