distinct 方法

Stream<T> distinct(
  1. [bool equals(
    1. T previous,
    2. T next
    )?]
)

忽略如果数据事件与前一个数据事件相同的情况。

返回的流提供了与该流相同的事件,但从不提供两个连续相同的数据事件。也就是说,错误会被传递到返回的流中,如果数据事件与前一个最刚发出的事件不同,则也会传递数据事件。

相等性是通过提供的 equals 方法确定的。如果省略,则使用最后一个提供的数据元素的 '==' 操作符。

如果 equals 抛出异常,数据事件会被替换为一个包含抛出错误的错误事件。其行为与原始流发出错误事件相同,并且不会改变最近发出的数据事件。

如果该流是广播流,则返回的流也是广播流。如果对广播流进行了多次监听,每个订阅都将单独执行 equals 测试。

示例

final stream = Stream.fromIterable([2, 6, 6, 8, 12, 8, 8, 2]).distinct();
stream.forEach(print); // Outputs events: 2,6,8,12,8,2.

实现

Stream<T> distinct([bool equals(T previous, T next)?]) {
  return new _DistinctStream<T>(this, equals);
}