【问题标题】:RxJava 2 - filter list inside list objectsRxJava 2 - 在列表对象中过滤列表
【发布时间】:2018-03-12 11:34:55
【问题描述】:

getData() 返回一个 Single<ArrayList1> 里面有很多对象,也就是ArrayListX。我只想接收那些不为空的cars(ArrayList)。当然,results.filter { cars -> cars.size > 0 } 不起作用,因为它返回的列表不是布尔值。如何以正确的方式实现这一目标?附:还在学习rxjava,哈哈

val disposable = repository.getData()
                    .observeOn(AndroidSchedulers.mainThread())
                    .filter { results ->
                        results.filter { cars -> cars.size > 0 }
                    }
                    .subscribe({ searchResults ->
                       ...
                    }, { _ ->
                        ...
                    })
            compositeDisposable.add(disposable)

【问题讨论】:

  • 在 RxJava 中使用 map 而不是 filter
  • 正如@akarnokd 所说,您可能想要:.map { results -> results.filter { cars -> cars.size > 0 } }
  • @akarnokd 我编辑了帖子。我返回Single<Arraylist>。我认为我不需要map

标签: android kotlin rx-java2


【解决方案1】:

这对我有用:

import io.reactivex.Single
import java.util.*

fun main(args: Array<String>) {

    val source = Single.just(Arrays.asList(
            Collections.emptyList(),
            Arrays.asList(1, 2),
            Collections.emptyList(),
            Arrays.asList(3, 4, 5)
    ));

    // Single<List<(Mutable)List<Int!>!>!>!
    val output = source.map({ items -> items.filter({ !it.isEmpty()} )})

    output.subscribe({ res -> System.out.println(res) })
}

打印

[[1, 2], [3, 4, 5]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2022-01-12
    • 2015-03-24
    • 2011-01-10
    • 2013-04-10
    相关资源
    最近更新 更多