为什么distinct()不返回唯一的Integer项?

时间:2017-10-23 14:18:24

标签: android rx-java rx-java2

return repository.loadItems(id)
    .take(1)
    .flatMapIterable { item -> item }
    .map { item -> item.clientId}
    .toList()
    .toFlowable()
    .distinct();


fun loadItems(id: Int): Flowable<List<Item>> {
    return dao.loadItems(id)
}

我将List map映射到List并希望过滤并保存只有唯一的,而distinct()不起作用它带来了与初始列表一样多的项目

1 个答案:

答案 0 :(得分:2)

distinct过滤掉通过它的重复项。由于您在错误的位置应用它,它只接收一个List对象,它本身是不同的。

distinct之前应用toList,以便在将展开的List汇总到新的List之前对其进行过滤。

return repository.loadItems(id)
    .take(1)
    .flatMapIterable { item -> item }
    .map { item -> item.clientId}
    .distinct()  // <------------------------------------------------------
    .toList()
    .toFlowable()