RxJava组由时间戳组成

时间:2015-09-11 16:54:19

标签: reactive-programming rx-java

我有一个问题需要解决,RxJava似乎是一种处理这类事情的正确方法,但是我对所有这些不同的操作员都很失落,并且不确定哪一个会在我的情况下起作用。

我有以下类型的有限对象流:

java.io.NotSerializableException: dataaccess.ServerSide

我的目标 - 按时间戳对它们进行分组。让我们说每个新的小时新组都需要生成,所以我有一组代表每小时事件的组。

我查看了class MyObject { long timestamp; Object data; } 运算符,但我不确定我是否完全理解键选择器和元素选择器概念。

1 个答案:

答案 0 :(得分:2)

groupBy这是一项简单明了的工作。键选择器允许您选择用于建立组的键。可以把它想象成GROUP BY的SQL语句。值选择器让你在每个组中提取你想要观察的内容,而不需要是整个对象而只是它的一部分;这相当于SQL SELECT

根据您的情况,这就是它的完成方式:

source
.groupBy(
    v -> v.timestamp / 3_600_000L , 
    v -> v.data
);

这会给你一系列GroupedObservable<Long, Object>。小时计算是基本的,根据您的环境,您可以使用jodatime或Java 8的新日期API来执行准确的计算。