RxJava: Bedingtes Anwenden von Operatoren auf eine Observable ohne Unterbrechung der Kette

Ich habe eine Kette von Operatoren auf einem RxJava, die beobachtet werden können. Ich möchte in der Lage sein, einen von zwei Operatoren abhängig von einem Booleschen Wert anzuwenden, ohne die "Kette zu unterbrechen".

Ich bin relativ neu in Rx (Java) und glaube, es gibt wahrscheinlich eine idiomatischere und besser lesbare Methode, dies zu tun, als meine derzeitige Methode, eine temporäre Variable einzuführen.

Hier ist ein konkretes Beispiel, bei dem Elemente aus einem beobachtbaren Feld gepuffert werden, wenn ein Feld für die Stapelgröße nicht null ist. Andernfalls wird ein einzelner Stapel mit unbegrenzter Größe mit @ ausgegebetoList():

Observable<Item> source = Observable.from(newItems);
Observable<List<Item>> batchedSource = batchSize == null ?
                source.toList() :
                source.buffer(batchSize);
return batchedSource.flatMap(...).map(...)

Ist so etwas möglich? (Pseudolambda weil Java):

Observable.from(newItems)
    .applyIf(batchSize == null,
             { o.toList() },
             { o.buffer(batchSize) })
    .flatMap(...).map(...)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage