官术网_书友最值得收藏!

distinctUntilChanged()

The distinctUntilChanged() function will ignore duplicate consecutive emissions. It is a helpful way to ignore repetitions until they change. If the same value is being emitted repeatedly, all the duplicates will be ignored until a new value is emitted. Duplicates of the next value will be ignored until it changes again, and so on. Observe the output for the following code to see this behavior in action:

import io.reactivex.Observable;

public class Launcher {
public static void main(String[] args) {

Observable.just(1, 1, 1, 2, 2, 3, 3, 2, 1, 1)
.distinctUntilChanged()
.subscribe(i -> System.out.println("RECEIVED: " + i));
}
}

The output of the preceding code snippet is as follows:

RECEIVED: 1
RECEIVED: 2
RECEIVED: 3
RECEIVED: 2
RECEIVED: 1

We first receive an emission of 1, which is allowed forward. But the next two 1 are ignored because they are consecutive duplicates. When it switches to 2, that initial 2 is emitted, but the following duplicate is ignored. A 3 is emitted and its following duplicate is ignored as well. Finally, we switch back to a 2 that emits and then a 1 whose duplicate is ignored.

Just like distinct(), you can provide an optional argument for a key through a lambda mapping. In the following code snippet, we execute the distinctUntilChanged() operation with strings keyed on their lengths:

import io.reactivex.Observable;

public class Launcher {
public static void main(String[] args) {

Observable.just("Alpha", "Beta", "Zeta", "Eta", "Gamma",
"Delta")
.distinctUntilChanged(String::length)
.subscribe(i -> System.out.println("RECEIVED: " + i));
}
}

The output of the preceding code snippet is as follows:

RECEIVED: Alpha
RECEIVED: Beta
RECEIVED: Eta
RECEIVED: Gamma

Note that Zeta was skipped because it comes right after Beta, which also is four characters. Delta is ignored as well because it follows Gamma, which is five characters as well.

主站蜘蛛池模板: 灵川县| 周宁县| 庆元县| 什邡市| 西乌珠穆沁旗| 上虞市| 天镇县| 广宁县| 城市| 鄂州市| 墨玉县| 远安县| 永嘉县| 德格县| 尉犁县| 灵石县| 五莲县| 吕梁市| 淳安县| 郯城县| 枣阳市| 瓮安县| 甘肃省| 大丰市| 孝昌县| 长沙县| 贵溪市| 土默特左旗| 杭锦后旗| 绍兴县| 景谷| 永寿县| 江北区| 汪清县| 金昌市| 灵川县| 萨嘎县| 旺苍县| 牡丹江市| 平陆县| 南充市|