RxJava2中的groupBy之后take(n)无效

时间:2018-10-01 14:29:05

标签: group-by rx-java2 take

我试图按名称对几个模型实例进行分组,然后使用take(n)仅对每个组取某些项目,但是采用某种方式对GroupedObservable无效。这是代码

假设其中包含一个包含10个项目的列表,其中5个具有名称“ 苹果”,其他5个具有名称“

Observable<Item> items....

Observable<Item> groupedItems = items.groupBy(Item::name)
.flatMap(it -> it.take(2));

因此,我想 groupedItems 必须发出2个“苹果”和2个“豌豆”,但实际上却要全部发出。

有什么地方我做错了吗,我需要做些不同的事情吗?

1 个答案:

答案 0 :(得分:1)

当再次遇到相同的密钥时,将重新创建已取消的组。您需要确保该组没有停止,并且您必须以某种方式忽略其他项:

source.groupBy(func)
.flatMap(group -> 
    group.publish(p -> p.take(5).mergeWith(p.ignoreElements()))
);