我想出的唯一解决方案是使用groupBy
,但它看起来很hack,IMO:
objectsObservable
.groupBy(object -> object)
.flatMapMaybe(sameObjectsObservable -> {
Object object = sameObjectsObservable.getKey();
return sameObjectsObservable
.count()
.filter(shouldFilter)
.ignoreElement()
.andThen(Maybe.just(object));
})
您只需要一个步骤即可count()
单个组。
objectsObservable
.groupBy( object -> object )
.flatMap( objectGroup -> objectGroup
.count()
.map( c -> objectGroup.getKey() + " has " + c + " elements") )
.subscribe( System::out::println );