Преимущество номер 1 в Rx - асинхронное выполнение и изменение потоков (если можно так сказать).Если вам это не нужно, то более эффективно использовать так называемые цепочки Котлина, поскольку каждая цепочка (каждый вызов метода) в цепочке Rx создает новые наблюдаемые, например:
.filter{ ... }
resultsв этом вызове метода, который создаст ObservableFilter
@CheckReturnValue
@SchedulerSupport(SchedulerSupport.NONE)
public final Observable<T> filter(Predicate<? super T> predicate) {
ObjectHelper.requireNonNull(predicate, "predicate is null");
return RxJavaPlugins.onAssembly(new ObservableFilter<T>(this, predicate));
}
оператор Kotlin .filter{...}
, с другой стороны, использует встроенную функцию
public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {
return filterTo(ArrayList<T>(), predicate)
}
Я бы сказал, что Rx лучшевыберите, нужно ли вам менять потоки или выполнять некоторые цепные вызовы асинхронно, или если вся ваша система построена на Rx.