RxJava條件操作符

2021-09-09 08:49:33 字數 4576 閱讀 9410

1、all():判斷事件序列是否全部滿足某個事件,如果都滿足則返回true,反之返回false

方法簽名:

public final observableambwith(observablesource<? extends t> other)

observable.just(1, 2, 3, 4)

.all(new predicate < integer > ()

}).subscribe(new consumer < boolean > ()

});

列印結果:

***************===aboolean true
2、takewhile():可以設定條件,當某個資料滿足條件時就會傳送該資料,反之則不傳送。

方法簽名:

public final observabletakewhile(predicate<? super t> predicate)

observable.just(1, 2, 3, 4)

.takewhile(new predicate < integer > ()

}).subscribe(new consumer < integer > ()

});

列印結果:

********************====integer 1

********************====integer 2

3、skipwhile():可以設定條件,當某個資料滿足條件時,不傳送該資料,反之則傳送。

方法簽名:

public final observableskipwhile(predicate<? super t> predicate)

observable.just(1, 2, 3, 4)

.skipwhile(new predicate < integer > ()

}).subscribe(new consumer < integer > ()

});

列印結果

********************====integer 3

********************====integer 4

方法簽名:

public final observabletakeuntil(predicate<? super t> stoppredicate

observable.just(1, 2, 3, 4, 5, 6)

.takeuntil(new predicate < integer > ()

}).subscribe(new consumer < integer > ()

});

列印結果:

********************====integer 1

********************====integer 2

********************====integer 3

********************====integer 4

5、skipuntil():當skipuntil()中的observable傳送事件了,原來的observable才會傳送事件給觀察者。

方法簽名:

public final observableskipuntil(observablesourceother)

observable.intervalrange(1, 5, 0, 1, timeunit.seconds)

.skipuntil(observable.intervalrange(6, 5, 3, 1, timeunit.seconds))

.subscribe(new observer < long > ()

@override

public void onnext(long along)

@override

public void onerror(throwable e)

@override

public void oncomplete()

});

列印結果:

********************====onsubscribe 

********************====onnext 4

********************====onnext 5

********************====oncomplete

從結果可以看出,skipuntil()裡的observable並不會傳送事件給觀察者。

6、sequenceequal():判斷兩個observable傳送的事件是否相同。

方法簽名:

public static singlesequenceequal(observablesource<? extends t> source1, observablesource<? extends t> source2)

......

observable.sequenceequal(observable.just(1, 2, 3),

observable.just(1, 2, 3))

.subscribe(new consumer < boolean > ()

});

列印結果:

********************====onnext true
7、contains():判斷事件序列中是否含有某個元素,如果有則返回true,如果沒有則返回false.

方法簽名:public final singlecontains(final object element)

observable.just(1, 2, 3)

.contains(3)

.subscribe(new consumer < boolean > ()

});

列印結果:

********************====onnext true
8、isempty():判斷事件序列是否為空。

方法簽名:public final singleisempty()

observable.create(new observableonsubscribe < integer > ()

}).isempty()

.subscribe(new consumer < boolean > ()

});

列印結果:

********************====onnext true
9、amb():amb()要傳入乙個observable集合,但是只會傳送最先傳送事件的observable中的事件,其餘的observable將會被丟棄。

方法簽名:

public static observableamb(iterable<? extends observablesource<? extends t>> sources)

arraylist < observable < long >> list = new arraylist < > ();

list.add(observable.intervalrange(1, 5, 2, 1, timeunit.seconds));

list.add(observable.intervalrange(6, 5, 0, 1, timeunit.seconds));

observable.amb(list)

.subscribe(new consumer < long > ()

});

列印結果:

********************====along 6

********************====along 7

********************====along 8

********************====along 9

********************====along 10

10、defaultifempty():如果觀察者只傳送乙個oncomplete()事件,則可以利用這個方法傳送乙個值。

方法簽名:

public final observabledefaultifempty(t defaultitem)

observable.create(new observableonsubscribe < integer > ()

}).defaultifempty(666)

.subscribe(new consumer < integer > ()

});

列印結果:

********************====onnext 666

Rxjava條件和布林操作符

條件操作符 作用amb 給定多個observable,只讓第乙個發射資料的observable發射資料 defaultifempty 發射來自原始的observable的資料,如果原始observable沒有發射資料則發射乙個預設資料 skiputil 丟棄原始observable發射的資料,直到第...

RxJava筆記 RxJava操作符

用來建立observable。public static observablecreate onsubscribef 把其他型別的物件和資料型別轉化成observable。observable.just 123 把其他型別的物件和資料型別轉化成observable。與just區別在與引數返回值不同 ...

RxJava操作符學習

操作符學習推薦閱讀 官方英文 翻譯中文 先來看乙個簡單的例子 被觀察者 observable.onsubscribeintegeronsubscribe new observable.onsubscribe 觀察者 subscriberintegersubscriber new subscriber...