Java 拿第一项,不要完成

Java 拿第一项,不要完成,java,rx-java2,Java,Rx Java2,有没有办法(操作员)缩小/增强下面的代码 我想获取一个可观测元素的第一个元素,但延迟它的完成,直到源完成为止(这就是为什么我使用忽略元素) 公共类SOTest{ 私有最终TestScheduler调度器=新的TestScheduler(); @试验 公共无效先取和不完整(){ TestObserver测试=可观察的时间间隔(1,TimeUnit.SECONDS,调度程序) .take(7) .发布(o->o .firstElement() .TooObservable()文件 .concatWi

有没有办法(操作员)缩小/增强下面的代码

我想获取一个可观测元素的第一个元素,但延迟它的完成,直到源完成为止(这就是为什么我使用
忽略元素

公共类SOTest{
私有最终TestScheduler调度器=新的TestScheduler();
@试验
公共无效先取和不完整(){
TestObserver测试=可观察的时间间隔(1,TimeUnit.SECONDS,调度程序)
.take(7)
.发布(o->o
.firstElement()
.TooObservable()文件
.concatWith(o)
.doOnNext(e->System.out.println(“待忽略:+e))
.ignoreElements()
)
)
.doOnNext(e->System.out.println(“第一个是:+e))
.test();
scheduler.advanceTimeTo(1,时间单位:秒);
测试.资产价值计数(1);
test.assertNotComplete();
调度程序.advanceTimeTo(5,时间单位.s);
测试.资产价值计数(1);
test.assertNotComplete();
调度程序.advanceTimeTo(7,时间单位.s);
测试.资产价值计数(1);
test.assertComplete();
}
}
怎么样

比较器将阻止除第一项之外的所有项。当上游完成时,流完成


编辑:

甚至更短,只需
.distinct

Observable.interval(1, TimeUnit.SECONDS, scheduler)
    .take(7)
    .distinct(a -> 0)
    .test();
Observable.interval(1, TimeUnit.SECONDS, scheduler)
    .take(7)
    .distinct(a -> 0)
    .test();