Rxjava 1のObservableクラスにはfromメソッドがありますが、rxjava 2にはありません。次のコードのrxjava 2のfromメソッドをどのように置き換えることができますか。
List<Integer> ints = new ArrayList<>();
for (int i=1; i<10; i++) {
ints.add(new Integer(i));
}
Observable.just(ints)
.flatMap(new Function<List<Integer>, Observable<Integer>>() {
@Override
public Observable<Integer> apply(List<Integer> ints) {
return Observable.from(ints);
}
})
Observable.fromIterable(source)
を使用できます
ドキュメント から:
一部の演算子のオーバーロードは、fromArray、fromIterableなどの接尾辞で名前が変更されています。これは、ライブラリがJava 8でコンパイルされている場合、javacが関数と関数を明確に区別できないことが多いためです。インターフェイスタイプ。
List<Integer> ints = new ArrayList<>();
for (int i=1; i<10; i++) {
ints.add(new Integer(i));
}
Observable.just(ints)
.flatMap(new Function<List<Integer>, Observable<Integer>>() {
@Override
public Observable<Integer> apply(List<Integer> ints) {
return Observable.fromIterable(ints);
}
})
.just()
演算子を介してリストから直接Observable
を作成できるため、fromIterable()
を使用する必要はありません。
Observable.fromIterable(ints)
少し遅いと思いますが、 RxJavaのドキュメント のfrom
演算子に関連するAPIの変更を人々に知らせたかっただけです。
from
はfromArray
、fromIterable
、fromFuture
に明確化されました
リストが必要な場合は、Java Stream
を使用して、そこからList
を作成し、それを Observable.fromIterable
メソッド。このような:
Observable.fromIterable(IntStream.rangeClosed(lowerLimitInclusive,upperLimitInclusive)
.boxed()
.collect(Collectors.toList()));
または
Observable.fromIterable(Stream.iterate(lowerLimitInclusive, integer -> integer + 1)
.filter(integer -> integer < (upperLimit+1))
.limit((long(upperLimit+1)-long(lowerLimitInclusive))
.collect(Collectors.toList()));