Rxjava(3) 过滤操作
2019-08-01 本文已影响0人
其勇勇
Skip(2) 忽略前两条数据进行发送数据
SkipLast(2) 忽略最后两条数据进行发送数据
Take(2) 只发送前两条数据
TakeLast(2) 只发送最后两条数据
private void first_last(){
//只发射第一项(或者满足某个条件的第一项)数据
Observable.fromIterable(mData).first("pp").subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.e("qwer",s);
}
});
//只发射最后一项(或者满足某个条件的最后一项)数据
Observable.fromIterable(mData).last("pp").subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.e("qwer",s);
}
});
}
private void filter(){
//根据条件过滤
Observable.fromIterable(mData).filter(new Predicate<String>() {
@Override
public boolean test(String s) throws Exception {
return Integer.valueOf(s) > 4;
}
}).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
}
});
}
private void elementAt(){
//发送指定位置的数据
Observable.fromIterable(mData).elementAt(2).subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.e("qwer",s);
}
});
//发送指定位置的数据,位置不存在,就发送默认的数据
Observable.fromIterable(mData).elementAt(8,"king").subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.e("qwer",s);
}
});
}
@SuppressLint("CheckResult")
private void distinct(){
/*
* 去重,重复的数据将不做处理
*/
Observable.fromIterable(mData).distinct().subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.e("qwer",s);
}
});
}