使用 Java 8 的复杂自定义收集器

2023-12-28

我有一个对象流,我想通过以下方式收集它们。

假设我们正在处理论坛posts:

class Post {
    private Date time;
    private Data data
}

我想创建一个列表,其中包含哪些组posts通过一段时间。如果没有posts for X分钟,创建一个新组.

class PostsGroup{
    List<Post> posts = new ArrayList<> ();
}

我想得到一个List<PostGroups>含有posts按区间分组。

Example:的间隔10分钟。

Posts:

[{time:x, data:{}}, {time:x + 3, data:{}} , {time:x + 12, data:{}, {time:x + 45, data:{}}}]

我想要一份清单帖子组:

[
 {posts : [{time:x, data:{}}, {time:x + 3, data:{}}, {time:x + 12, data:{}]]},
{posts : [{time:x + 45, data:{}]}
]
  • 请注意,第一个group一直持续到X + 22。然后一个new post收到于X + 45.

这可能吗?


这个问题可以很容易地解决,使用groupRuns http://amaembo.github.io/streamex/javadoc/one/util/streamex/StreamEx.html#groupRuns-java.util.function.BiPredicate-我的方法StreamEx https://github.com/amaembo/streamex图书馆:

long MAX_INTERVAL = TimeUnit.MINUTES.toMillis(10);
StreamEx.of(posts)
        .groupRuns((p1, p2) -> p2.time.getTime() - p1.time.getTime() <= MAX_INTERVAL)
        .map(PostsGroup::new)
        .toList();

我假设你有一个构造函数

class PostsGroup {
    private List<Post> posts;

    public PostsGroup(List<Post> posts) {
        this.posts = posts;
    }
}

The StreamEx.groupRuns方法需要一个BiPredicate它应用于两个相邻的输入元素,如果它们必须分组在一起,则返回 true。此方法创建列表流,其中每个列表代表一个组。此方法是惰性的,并且适用于并行流。

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

使用 Java 8 的复杂自定义收集器 的相关文章

随机推荐

  • 如何在C中读取和覆盖文本文件?

    我有一个文本文件 text txt 其内容为 为了简单起见 this is line one this is line two this is line three 再次为了简单起见 我只是尝试将每行中的第一个字符设置为 x 所以我想要的结
  • 当“myType”在运行时动态生成时,鉴别器“myType”不明确

    我有一个应用程序 它在运行时动态创建新类型 创建该类型的对象并将它们插入到类型的 MongoDB 数据库集合中object 使用 shell 我可以看到对象已正确插入并且 tvalue 是动态创建的类的正确名称 我正在尝试使用以下方法从我的
  • KeyCloak 用户联合和动态角色

    我正在使用本指南http www keycloak org docs 3 2 server development topics user storage html http www keycloak org docs 3 2 server
  • 如何在 Python 中生成随机字符串(长度为 X,仅 a-z)? [复制]

    这个问题在这里已经有答案了 可能的重复 python 生成带有大写字母和数字的随机字符串 https stackoverflow com questions 2257441 python random string generation w
  • 使用 Firefox(最新 32 位)浏览器的量角器未加载

    因此 由于某种原因 当我运行 Protractor 时 Firefox 最新 32 只会打开一个空浏览器 并且不会导航到 baseURL 我编写的测试在 Chrome 上工作得很好 但在 Firefox 上却不行 这可能与conf文件的设置
  • 如何从 Android 的 Google 获取当前时间? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有 Google API 可以从时区获取当前时间 如果有 我该如何使用它 我想从特定时区获取当前在
  • Android 中同时播放多个视频文件

    我曾在 iPad 上对 iOS 提出过同样的问题 但现在我想看看在 Android 中是否可行 目前我收到的回复是 iOS 内没有 如果在 Android 中可行 请解释一下使用了什么 API 这是我引用的原始问题 iOS 上的原始帖子可在
  • 如何枚举 SQL 中返回的行?

    我想知道是否可以枚举返回的行 不根据任何列内容 而只是产生一个顺序整数索引 例如 select count as usercount from users group by age 会返回类似的内容 1 12 2 78 3 4 4 42 那
  • 无法解析符号“createFromResource”

    我完全不明白这意味着什么 我已经进行了一些搜索 但到目前为止还没有找到任何帮助 我正在使用 android studio 并有一个对话框片段 我正在其中设置一个微调器 Spinner systemFontSpinner Spinner vi
  • Seaborn 热图更改 yticks 的日期频率

    我的问题与该主题遇到的问题类似 更改多索引数据帧的热图 xticks https stackoverflow com questions 66897981 change heatmaps yticks for multi index dat
  • 本地主机上的谷歌距离矩阵

    我正在尝试使用谷歌距离矩阵来找出从一个源到一个目的地的距离和时间 我正在调用该函数 postCode change function var address sydney var source melbourne var url https
  • EL 中的#{component} 到底是什么?

    根据https code google com p primefaces issues detail id 4720 https code google com p primefaces issues detail id 4720 The
  • GTK信号什么时候发出

    给定从用户连接到回调函数的信号 gtk main 线程将休眠 直到发出信号 我搜索了有关如何或何时发出的详细信息 但找不到任何我不知道的信息 更具体地说 它是异步发出的 以便我可以在某个函数中间调用信号 还是等待特定函数先返回 发出 切换页
  • CKReference 的 CloudKit 订阅通知未按预期工作

    我正在尝试为包含带有用户 CKReference 的字段的记录设置 CKSubscription 但每当创建记录时 它都会忽略compoundPredicate的这一部分 并且通知永远不会出现 在 CKSubscription 的谓词中使用
  • 我可以使用本地文件系统中的图像作为 HTML 的背景吗? [复制]

    这个问题在这里已经有答案了 我有一个托管在远程 Web 服务器上的 HTML 文档 我试图让网页上的元素之一使用本地文件系统中的图像文件作为其背景图像 Chrome Safari 或 Firefox 都不行 还没有尝试过 IE 这是我迄今为
  • 如何通过验证保留 JSF 视图参数

    我将 JSF 2 0 CDI 和 PrimeFaces 2 2 1 用于许多 CRUD 表单 这些表单允许用户通过单击数据表中的链接来查看或更新现有实体的属性 其中实体的标识符被传递到CRUD 形式作为视图参数 我在 PrimeFaces
  • 内存是否加密?

    我想将一些数据存储在变量中 并且我知道变量存储在内存中 内存中的数据是否被加密 另外 软件是否可以读取存储在内存中的变量名称并能够从中实际提取数据 内存是not在我所知道的任何平台上进行加密 无论如何 它的价值有限 因为处理器通常必须对明文
  • R 中 MuMIn 包的标准化

    我使用 R 中的 MuMIn 包来选择模型并计算输入变量 rain brk onset wid 的效应大小 为了使变量之间的效应大小具有可比性 我使用标准化函数对它们进行了标准化arm包裹 这是我正在遵循的代码 供参考 请参阅本文附录 ht
  • StreamReader 和二进制数据

    我有这个包含不同字段的文本文件 某些字段可能包含二进制数据 我需要获取文件中的所有数据 但现在使用 StreamReader 时 它不会读取二进制数据块以及之后的数据 解决这个问题的最佳解决方案是什么 Example field1 fiel
  • 使用 Java 8 的复杂自定义收集器

    我有一个对象流 我想通过以下方式收集它们 假设我们正在处理论坛posts class Post private Date time private Data data 我想创建一个列表 其中包含哪些组posts通过一段时间 如果没有post