gpt4 book ai didi

java - 如何使用 RxJava 过滤列表并对所有匹配的元素进行分组

转载 作者:行者123 更新时间:2023-11-30 10:12:10 24 4
gpt4 key购买 nike

我有一个非常大的列表,想在后台线程中对其执行简单的 Filter 操作,然后在操作结束时获取符合过滤条件的结果列表。

我对 RxJava 还是个新手,所以我正在努力让它工作。我所拥有的是以下内容(largeList 是一个 ArrayList,其中填充了 Item):

    Observable
.fromIterable(largeList)
.filter { it.name.contains(query) }
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe { ... }

当我订阅时,我得到一个Item,而不是所有通过过滤器的项目的完整列表。如何创建所有匹配结果的子列表?

最佳答案

使用 toList() 运算符。 toList working

对于给定的 Observable,它将收集传入的发射到一个列表中,然后将整个列表作为单个发射(通过 Single>)推送。

 Observable
.fromIterable(largeList)
.filter { it.name.contains(query) }
.toList()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe { ... }

此外,您还可以选择指定一个整数参数作为 capacityHint,这将优化 ArrayList 的初始化以大致预期项目数:

  Observable
.fromIterable(largeList)
.filter { it.name.contains(query) }
.toList(capacityHint)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe { ... }

关于java - 如何使用 RxJava 过滤列表并对所有匹配的元素进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52016245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com