如何使用 Java 8 中的流将列表中的对象按属性分组到其他列表中?

2024-01-05

我想对包含以下内容的对象列表进行分组time属性分为 5 分钟间隔,最好使用流和收集器。

我在 StackOverflow 上找到的唯一可能的解决方案是计算我需要多少个间隔(子列表),将每个对象添加到每个列表中,并过滤掉不适合相应时间范围的对象,这并不是一个很好的解决方案。

(您可以在这里找到该主题:如何在 Java 8 中按另一个列表的元素对列表的元素进行分组 https://stackoverflow.com/questions/30245142/how-to-group-elements-of-a-list-by-elements-of-another-in-java-8)

我想到了类似的事情:

List<MyObject> list = new ArrayList<MyObject>();
.......
List<List<MyObject>> grouped = list.stream().collect(Collectors.groupingBy(obj -> obj.getTime() / intervalLength));

这当然行不通。

我希望,随着 Java 8 及其功能被越来越多地使用,我们可以找到解决此类问题的解决方案。

问候, 克拉斯·M.

编辑: 最后,我使用了@Harsh Poddar的解决方案,并将地图转换为列表列表,使用

for(Map.Entry<Integer, List<MyObject>> entry:map.entrySet())
  list.add(entry.getValue());

注意:之后必须对列表进行排序。


这完全可以正常工作:

Map<Long,<List<MyObject>> grouped = ticks.stream().collect(Collectors.groupingBy(obj -> obj.getTime() / intervalLength));

此方法将为您提供一个地图,然后您可以在该地图上调用 .values() 来获取列表的列表。第一个元素将包含 obj.getTime() 从 0 到 IntervalLength 的元素(前提是存在此类元素)。第二个将包含从intervalLength到intervalLength*2等等

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Java 8 中的流将列表中的对象按属性分组到其他列表中? 的相关文章

随机推荐

  • 在Python中组合模块文件

    有没有一种方法可以将 Python 文件组合在一起 类似于 Java 中的 JAR 我需要一种打包 Python 类和函数集的方法 但与标准模块不同 我希望它位于一个文件中 在寻找同一问题的解决方案后 我最终编写了一个简单的工具 它将多个
  • 如何从Flash加载flex swf?

    我有一些在 Flex 中编译的 swf 我想将其加载到 flash pro 中的影片剪辑中 那么如何在 Flash CS4 中加载 flex swf 呢 怎么做这样的事情 您可以在这里阅读更多相关信息 http troygilbert co
  • Cakephp 路由前缀

    我的应用程序有 3 种不同的布局 与内容的不同部分相关 我想定义我的 url s 以便他们在开头的 ex 中包含该部分 mypage com part1 controller 我不知道如何改变路线来实现这一点 附 我不想要普通的前缀路由 其
  • 如何在日志文件名中的文件扩展名之前附加滚动索引

    我正在使用RollingLogFileAppender它工作得很好并且正在滚动到新文件中 但它在文件的最后添加了 1 2 等 所以我最终得到 log 1 log 2等等 所以从技术上讲 每个文件都有一个资源管理器不知道的新扩展名 所以我不能
  • scanf 不超过缓冲区溢出

    我有一个缓冲区 我不希望用户输入的字符多于缓冲区可以容纳的字符 以避免缓冲区溢出 我在用scanf并做了这样的事情 char buffer 30 0 scanf 30s buffer 但是 我知道如果用户输入超过 30 个 我会受到保护 但
  • 用户空间和内核线程之间的共享内存

    我正在开发一个涉及 kthreads 的内核应用程序 我创建一个结构数组并在用户空间中使用 malloc 分配内存 然后我调用系统调用 我实现的 并将数组的地址传递到内核空间 在我创建的系统调用处理程序中 我创建了 2 个 kthreads
  • 使用分组依据和按日期排序的 SQL 选择

    我正在使用 SQL Server 2008 我想知道是否可以在一个 select 语句中完成我的查询 而无需子查询 如果记录中的字段在最近 10 个创建的记录中为 true 我想将变量设置为 true 如果该字段在最后 10 个记录中为 t
  • Google GData .Net OAuthUtil.GetAccessToken 400 错误请求

    我正在尝试通过 Google Net GData 客户端库生成 OAuth 访问令牌 我一直在使用中的说明http code google com apis gdata docs auth oauth html http code goog
  • 在数据库中使用DXL导入SSJS脚本库

    我们需要使用 DXL 在数据库中导入 SSJS 库 为此 我们编写了一个 Java 代理 其代码如下 import lotus domino public class JavaAgent extends AgentBase private
  • 堆栈不足以继续安全地执行程序。 ASP.NET MVC 4

    我的搜索功能似乎在无限循环中继续 每次我的调试命中 POST actionresult 下面的操作时都会被触发 在我的 Masterpage cshtml 中 我有以下操作 li Html Action Search Search li 这
  • 递归删除数组键前缀

    我有一个以下格式的数组 每个子数组都以父级的键作为前缀 input array seo text gt array seo text title gt seo text description gt seo text button gt a
  • 一键上传文件

    如何在需要发送文件的 html 中制作一个按钮 允许您选择文件 然后将其发送到我想要的页面上 而不使用按钮来选择文件并使用按钮将其发送到另一个页面 感谢您
  • python3.6 - TypeError:write() 参数必须是 str,而不是 bytes - 但不涉及文件

    以下代码返回错误 我不明白为什么 在Python 3 6上运行 import subprocess import sys import os def execute shell cmd cmd process subprocess Pope
  • Qt 上的“GLib-ERROR **:无法创建管道主循环唤醒:打开的文件太多”

    我正在 Ubuntu 上工作 当我运行程序大约 1 小时后 我收到此错误 GLib ERROR 无法创建管道主循环唤醒 打开的文件太多程序意外完成 当我使用 gdb 运行时 它不会崩溃 我不明白为什么 以及此错误的原因是什么 非常感谢 打开
  • 后台模式下的 iOS 区域监控

    我在我的应用程序中使用区域监控 但遇到了一个问题 但找不到任何答案 区域监控在后台模式下如何工作 根据位置感知 PG 的说法 每次用户的当前位置 跨越边界区域 系统 生成适当的区域事件 为您的应用程序 如果你的 应用程序已经在运行 这些 活
  • 寻找一个 Perl 模块来在共享 RAM 中存储哈希结构

    我想将数据结构持久存储在 RAM 中 并可以从预分叉中访问它 Perl 中的 Web 服务器进程 理想情况下 我希望它的行为类似于 memcached 但不需要单独的守护进程 有任何想法吗 Use 缓存 FastMmap http sear
  • 定义中的预处理器指令? [复制]

    这个问题在这里已经有答案了 可能的重复 C 预处理器 在 define 中使用 if https stackoverflow com questions 2831934 c preprocessor using if inside defi
  • 检测零分和交叉中获胜的比赛

    我需要知道在圈和十字游戏中检测获胜动作的最佳方法 源代码并不重要 我只需要一个示例或可以开始的东西 我唯一能想到的就是使用循环并测试玩家所做的每个动作的每个方向 以搜索例如连续五个 有没有更快更有效的方法呢 真正简单的解决方案是从最后一步开
  • Haskell 中的多核编程 - Control.Parallel

    我正在尝试学习如何使用Control Parallel模块 但我认为我没有理解正确 我正在尝试运行以下代码 fibs hs import Control Parallel fib Int gt Int fib 0 0 fib 1 1 fib
  • 如何使用 Java 8 中的流将列表中的对象按属性分组到其他列表中?

    我想对包含以下内容的对象列表进行分组time属性分为 5 分钟间隔 最好使用流和收集器 我在 StackOverflow 上找到的唯一可能的解决方案是计算我需要多少个间隔 子列表 将每个对象添加到每个列表中 并过滤掉不适合相应时间范围的对象