Rx java 以特定类别的第n个前事件和其他所有事件为例

Rx java 以特定类别的第n个前事件和其他所有事件为例,rx-java,rx-java2,Rx Java,Rx Java2,说我有 public abstract class Event {} public final class A extends Event {} public final class B extends Event {} public final class C extends Event {} 现在,有了一个可观察的,,我如何过滤它,以便只有n,A的第次发射,以及B和C的所有发射都传递到流中 也许是这样的 myObservable.publish(shared -> Observ

说我有

public abstract class Event {}

public final class A extends Event {}
public final class B extends Event {}
public final class C extends Event {}
现在,有了一个可观察的
,我如何过滤它,以便只有
n
A
的第次发射,以及
B
C
的所有发射都传递到流中

也许是这样的

myObservable.publish(shared ->
  Observable.merge(
    shared.ofType(A.class).take(n),
    shared.notOfType(A.class) // this does not exist
  )
)

有没有解决这个问题的好方法?

只需使用instanceof并反转逻辑即可

@Test
void name() {
    Observable<? extends Event> just = Observable.just(
            new A(),
            new B(),
            new A(),
            new B(),
            new C(),
            new A(),
            new C()
    );

    int n = 2;

    Observable<? extends Event> publish = just.publish(shared ->
            Observable.merge(
                    shared.ofType(A.class).take(n),
                    shared.filter(o -> !(o instanceof A))
            )
    );

    publish.test()
            .assertValueCount(6);

}
@测试
无效名称(){
可观察