Java Streams:将列表分组为映射的映射

2024-06-25

我如何使用 Java Streams 执行以下操作?

假设我有以下课程:

class Foo {
    Bar b;
}

class Bar {
    String id;
    String date;
}

我有一个List<Foo>我想把它转换成Map <Foo.b.id, Map<Foo.b.date, Foo>. I.e: 首先分组由Foo.b.id然后通过Foo.b.date.

我正在努力解决以下两步方法,但第二个方法甚至无法编译:

Map<String, List<Foo>> groupById =
        myList
                .stream()
                .collect(
                        Collectors.groupingBy(
                                foo -> foo.getBar().getId()
                        )
                );

Map<String, Map<String, Foo>> output = groupById.entrySet()
        .stream()
        .map(
                entry -> entry.getKey(),
                entry -> entry.getValue()
                        .stream()
                        .collect(
                                Collectors.groupingBy(
                                        bar -> bar.getDate()
                                )
                        )
        );

提前致谢。


假设只有不同的数据,您可以一次性对数据进行分组Foo:

Map<String, Map<String, Foo>> map = list.stream()
        .collect(Collectors.groupingBy(f -> f.b.id, 
                 Collectors.toMap(f -> f.b.date, Function.identity())));

使用静态导入保存一些字符:

Map<String, Map<String, Foo>> map = list.stream()
        .collect(groupingBy(f -> f.b.id, toMap(f -> f.b.date, identity())));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Streams:将列表分组为映射的映射 的相关文章

随机推荐

  • 无限循环:确定并打破无限循环

    你如何判断一个循环是无限循环并且会跳出它 有没有人有算法或者可以帮助我解决这个问题 Thanks 没有通用的算法可以确定程序是否处于无限循环中图灵完备 http en wikipedia org wiki Turing completene
  • 使用node+express解压POST正文

    我有一个简单的节点应用程序 应该从客户端写入指标 客户端以 json 格式发送指标 并用 python 的 zlib 模块压缩 我试图添加一个中间件来在快速 bodyParse 发生之前解压缩请求帖子 我的中间件就是express默认提供的
  • 当 AWS Websocket Api Gateway 尝试通过 Cloudfront 提供服务时出现 403 Forbidden

    我使用 AWS 的 websocket API 网关创建了一个 Websocket API 创建 api 后 我得到了像这样的端点 wss x5g9h3p2rq execute api eu central 1 amazonaws com
  • 对静态变量的未定义引用[重复]

    这个问题在这里已经有答案了 可能的重复 C 对静态类成员的未定义引用 https stackoverflow com questions 272900 c undefined reference to static class member
  • JUnit + Maven:访问 ${project.build.directory} 值

    在我的单元测试中 我想在 project build directory 内创建一个 tmp 目录 如何在单元测试中访问 project build directory 的值 我能想到的一种方法是在测试资源中提供一个经过过滤的属性文件 该文
  • TableView 单元格重用和不需要的复选标记 - 这简直要了我的命

    苹果的iOSTableView细胞重复使用简直要了我的命 我搜索 搜索 研究 但找不到好的文档或好的答案 问题是当TableView重用单元格诸如在选定单元格上设置的复选标记 单元格附件 之类的内容会在表视图中更下方的单元格中重复 我知道
  • Django - 在模板中显示当前日期和时间

    如何在 django 模板中显示当前数据和时间 尝试使用内置的 django 模板标签和过滤器 https docs djangoproject com en stable ref templates builtins now https
  • ASP.NET MVC:文件响应流?

    当我从 MVC 操作方法返回 FilePathResult 时 会发生以下哪种情况 假设结果指向的文件非常大 文件被完整地加载到服务器的内存中 然后发送到客户端 该文件以某种方式传输到客户端 其方式在任何时候都不会完全加载到服务器的内存中
  • 更改选择菜单 Jquery Mobile 的选定值

    我创建了一个表单并将用户选择的值存储在数据库中 但现在如果用户想要编辑他的表单 我需要使用以前的值重新加载表单 我正在使用 JQUERY MOBILE 我从数据库中检索了他以前的值 但现在我在加载选择菜单中的值时遇到问题 任何人都可以帮助我
  • 如何轻松地将进度指示器置于 ProgressDialog 中(当没有标题/文本传递时)

    打电话时progressDialog ProgressDialog show this null null true 通常开发人员只想显示进度指示图像 并且通常希望它位于窗口的中心 至少从常规 UI 设计的角度来看 但是图像太左了 尽管我们
  • 用于测试肥皂客户端的公共免费网络服务[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有公 开的SOAP 1 2 http en wikipedia org wiki SOAP protocol WSDL 2 0 http en w
  • iText7 - 如果 /DA 使用十进制字体大小,PdfFormField.setValue() 会失败

    iText 7 0 0 我有一个由 Adob e LiveCycle ES 10 创建的 PDF 它生成一个带有 DA Arial BoldMT 9 00 Tf 0 000 0 000 1 000 rg 这会导致 PdfFormField
  • 跨水平服务器计算 socket.io 用户数

    我有多个使用 redisstore 水平扩展的 socket io 服务器 我已经有效地设置了房间 并且能够成功地跨服务器广播到房间等 现在我正在尝试构建一个状态页面 但我无法弄清楚如何简单地计算跨服务器连接的用户数量所有服务器 io so
  • JSF:空嵌套数据表

    我正在基于 JSF 为 JBoss 6 1 编写自己的 JMX 控制台实现 托管bean的部分代码 ManagedBean SessionScoped public class InspectionBean implements Seria
  • 如何防止 php 的远程文件包含攻击?

    这是我在index php中的代码 include GET page 实际上我需要包含来自 url 的页面 例如 page go php 另一方面我无法过滤 page example com 对于某些情况 我还需要包含这个值 但这是一个远程
  • 什么时候应该在 SQL Server 中使用分号?

    在检查 Web 上的一些代码和 SQL Server Management Studio 生成的脚本时 我注意到某些语句以分号结尾 那么我应该什么时候使用它呢 来自 SQLServerCentral Comarticle http www
  • 为什么我会遇到握手失败 (Java SSL)

    我正在通过 HTTPS 连接到 Web 服务 我已经完成了我认为使其正常工作所需的所有操作 但最终我握手失败了 我发现 作为一个新用户 由于 垃圾邮件防护 我无法发布超过 2 个链接 非常感谢 stackoverflow 无论如何 这里有一
  • 在不循环的情况下堆叠和整形 DataFrame (pandas) 切片

    我有一个以下形式的数据框 var1 var2 var3 day 0 0 001284819 0 00138089 1 022781 1 1 0 001310201 0 001377473 1 022626 1 2 0 001330947 0
  • HTTP post 上的 MVC 模型子对象为 null

    希望可以有人帮帮我 我是 MVC 新手 来自 winforms console vb6background 抱歉 如果这个问题已经得到解答 我正在努力了解如何解决以下问题 我有一个视图模型 public class testvm publi
  • Java Streams:将列表分组为映射的映射

    我如何使用 Java Streams 执行以下操作 假设我有以下课程 class Foo Bar b class Bar String id String date 我有一个List