【问题标题】:take(n) doesn't have effect after groupBy in RxJava2在 RxJava2 中的 groupBy 之后 take(n) 没有效果
【发布时间】:2019-03-06 16:40:27
【问题描述】:

我正在尝试按名称对几个模型实例进行分组,然后使用 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 个“梨”,但它拥有所有这些。

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

【问题讨论】:

  • 当再次遇到相同的键时,将重新创建已取消的组。

标签: group-by rx-java2 take


【解决方案1】:

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

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

【讨论】:

  • 似乎是一个可行的解决方案,非常感谢。
猜你喜欢
  • 2017-09-17
  • 2015-09-27
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 2014-10-07
  • 2018-11-16
  • 1970-01-01
  • 2013-11-09
相关资源
最近更新 更多