Nat*_*ann 10 java filter rx-java
我只是在练习RX Java,并希望在数组中找到与过滤器匹配的项目.我看不出任何明显的方法.我正在寻找可能压缩范围和迭代可观察的东西,但它很快变得比循环更冗长和复杂.
Sam*_*ter 19
曾经有mapWithIndex
和zipWithIndex
在RxJava运营商,但他们被删除,请参阅这里为什么.
所以你必须编写一些库样板文件:
class Indexed<T> {
final int index;
final T value;
public Indexed(T value, int index) {
this.index = index;
this.value = value;
}
@Override
public String toString() {
return index + ") " + value;
}
}
Iterable<Integer> naturals = IntStream.iterate(0, i -> i + 1)::iterator;
Run Code Online (Sandbox Code Playgroud)
但是,你可以相当简洁地得到它:
Observable<String> obs = Observable.just("zero", "one", "two", "three");
obs.zipWith(naturals, (s, i) -> new Indexed<String>(s, i))
.filter(e -> e.value.length() > 4)
.subscribe(System.out::println);
Run Code Online (Sandbox Code Playgroud)