Как создать счетную карту в реактивном программировании? - PullRequest
0 голосов
/ 21 мая 2018

Единственное решение, которое я придумал, - это использовать groupBy, но это выглядит странно, ИМО:

objectsObservable
                .groupBy(object -> object)
                .flatMapMaybe(sameObjectsObservable -> {
                    Object object = sameObjectsObservable.getKey();
                    return sameObjectsObservable
                            .count()
                            .filter(shouldFilter)
                            .ignoreElement()
                            .andThen(Maybe.just(object));

                })

1 Ответ

0 голосов
/ 22 мая 2018

Вам нужен только один шаг для count() отдельной группы.

objectsObservable
  .groupBy( object -> object )
  .flatMap( objectGroup -> objectGroup
                             .count()
                             .map( c -> objectGroup.getKey() + " has " + c + " elements") )
  .subscribe( System::out::println );
...