如何将此包装的地图列表扁平化为另一种地图Java 8?

铜星

我在弄清楚如何清理一些代码来执行此操作时遇到了麻烦:

我有一个Context对象列表每个Context都有一个String userId和一个Map<String, SomeObject> someObjects

我想将其展平到Map<String, SomeObjects>kep所在的位置userId更具体地说:

class Context {
    String userId;
    Map<String, List<SomeObject>> // the String here is something other than userId
    // other stuff, getters/setters
}

给定List<Context>,我想获取Map<String, List<SomeObject>但String实际上是userId的位置。

有一种干净的方法可以做到这一点吗?

波希米亚风格

假设aContext具有aString userid和a List<SomeObject> someObjects

Map<String, Set<SomeObject>> map = contexts.stream()
    .collect(Collectors.toMap(Context::getUserid, 
       c -> c.getSomeObjects().values().stream()
      .flatMap(Collection::stream)
      .collect(Collectors.toSet())
     ));

这里的关键点是使用来将atoMap()收集起来userid并将flatmap()Stream<List<SomeObject>>变成a,Stream<SomeObject>因此您可以将它们收集到一个集合中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何扁平化Java中的地图内的列表8

Java8-如何将嵌套地图转换为通过内部地图的键值收集的嵌套地图列表

Java 8流-合并地图列表

我如何排序使用Java 8的地图列表?

如何在Java 8中扁平化列表

使用Stream 8使用Java 8将类型嵌套列表转换为另一种类型

在Java 8中按地图列表分组

使用Java 8流处理地图列表

如何使用Java 8流从地图列表中找到每个用户的最低分数

如何在不使用String日期的情况下将Java 8中的LocalDate从一种格式转换为另一种LocalDate格式?

如何检测 V8 中从一种形状到另一种形状的过渡?

使用 Java 8 流使用地图列表构建新地图

如何从地图与Java 8流API列表制作一张地图

如何使用Java 8通过某些特定键的值对地图列表进行排序?

Java 8-如何使用流收集器对地图列表进行分组和求和

使用Java 8流分组通过在地图列表列表上吗?

从Java 8的地图列表中获取字符串

使用Java 8从地图列表中为某些键值创建arraylist

在Java 8中无需预定义方法即可将集合转换为另一种集合类型

在Java 8流中将地图转换为更扁平的结构

如何匹配源自用条件从地图数据列表并保存到使用Java 8流另一地图对象

计算从一种模型到另一种模型的字段数量-Odoo v8

在Vaadin 8中用另一种语言书写时加粗

注册或激活Windows 8的另一种方法

如何在不通过ruby的UTF-8的情况下将编码从ASCII-8BIT转换为另一种编码?

如何压平列表的嵌套地图与Java 8个流?

如何通过使用Java 8流列表过滤地图?

Java 8流收集项目列表的地图

Java的8 -flatten地图使用列表