準備工作 http://www.reibang.com/p/1ac62d93b962
練習一 http://www.reibang.com/p/6483b5babb45
這一章練習一些操作符:
take 獲取前面的序列
takeLast 獲取后面的序列
repeat 重復
repeatWhen 這個沒有理解等理解了在寫例子
empty 一個空序列
first 獲取第一個序列
last 獲取最后一個序列
firstOrDefault 獲取第一個如果為空獲取設置的
lastOrDefault 獲取最后一刻如果為空返回設置的
take:
static void take(){
Integer arr[] = {1,2,3,4 };
Observable.from(arr).take(2).subscribe(integerObserver);
}
static void take(int num) {
Integer arr[] = {1,2,3,4 };
Observable.from(arr).take(num).subscribe(integerObserver);
}
- 從一個序列中獲取前面的幾個
-
如果take的參數(shù)大于集合的大小,將會執(zhí)行完集合(不報錯)
takeLast:
static void takeLast(int num){
Integer arr[] = {1,2,3,4 };
Observable.from(arr).takeLast(num).subscribe(integerObserver);
}
- take與takeLast功能上差不多,takeLast是取后面的序列
repeat:
static void repeat(){
Observable.just(1).repeat(2).subscribe(integerObserver);
}
static void repeat2(){
Observable.just(2).repeat().subscribe(integerObserver);
}
static void repeat3(){
Observable.just(3).repeat().take(4).subscribe(integerObserver);
}
- repeat中的參數(shù)就是重復的次數(shù)
-
repeat中不寫參數(shù)會無限的執(zhí)行下去
運行結果是repeat()
first:
static void first(){
Integer arr[] = {1,2,3,4 };
//這里會獲取集合的第一個元素
Observable.from(arr).first().subscribe(integerObserver);
}
static Observer<Object> objectObserver = new Observer<Object>() {
@Override
public void onCompleted() {
System.out.println("onCompleted");
}
@Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(Object o) {
System.out.println(o);
}};
static void first2(){
Observable.empty().first().subscribe(objectObserver);
}
- first 會獲取第一個元素端铛,如果獲取不到會調用Observer的onError方法
last:
static void last(){
Integer arr[] = {1,2,3,4 };
Observable.from(arr).last().subscribe(integerObserver);
}static void last2(){
Observable.empty().last().subscribe(objectObserver);
}
- last和first的功能相似,last是獲取最后一個元素努酸,獲取不到調用Observer的onError方法
firstOrDefault:
static void firstOrDefault(){
Integer arr[] = {1,2,3,4 };
Observable.from(arr).firstOrDefault(9).subscribe(integerObserver);
}
static void firstOrDefault2(){
Observable.empty().firstOrDefault(9).subscribe(objectObserver);
}
- firstOrDefault與first的不同點就是當firstOrDefault獲取不到第一個元素的時候會返回設置的元素
lastOrDefault:
static void lastOrDefault(){
Integer arr[] = {1,2,3,4 };
Observable.from(arr).lastOrDefault(9).subscribe(integerObserver);
}
static void lastOrDefault2(){
Observable.empty().lastOrDefault(9).subscribe(objectObserver);
}
- 與firstOrDefault功能相似,取最后一個元素杜恰,取不到返回設置的元素