1

我正在尝试按名称对几个模型实例进行分组,然后使用 take(n) 仅在每个组中获取某些项目,但不知何故 take 对GroupedObservable. 这是代码

假设这包含一个包含 10 个项目的列表,其中 5 个名为“ apple ”,另外 5 个名为“ pear

Observable<Item> items....

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

所以我想groupedItems必须发出 2 个“苹果”和 2 个“梨”,但它拥有所有这些。

有什么我做错了,我需要以不同的方式做吗?

4

1 回答 1

1

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

source.groupBy(func)
.flatMap(group -> 
    group.publish(p -> p.take(5).mergeWith(p.ignoreElements()))
);
于 2018-10-01T16:59:11.967 回答