RxJava2:调用Flowable.toList时处理null

问题描述 投票:1回答:1

我有以下要求:遍历一个数组,并为每个元素发出一个方法,该方法有时可以返回null并最终将所有结果收集到一个列表中。

以下是代码段:

public Single<List<Object>> compileList(Parameter[] params) {
    return Flowable.fromArray(params).concatMapSingle(param -> {
               if(param == null)
                   return Single.just(Optional.empty());
               else
                   return doSomething(param);
            }).toList();
}

这很好用,但是我真正想要的是代替将Optional.empty填充到列表中,而只需要一个简单的null

谢谢!

rx-java2
1个回答
0
投票

您应该使用Maybe处理空值:

public Single<List<Object>> compileList(Parameter[] params) {
    return Flowable.fromArray(params)
            .concatMapMaybe(param -> {
                if (param == null) {
                    return Maybe.empty();
                } else {
                    // return Maybe.just(param);
                    return doSomething(param);
                }
            })
            .toList();
}

在上面的代码中,如果params包含空值,则fromArray会抛出NPE,但是正如您所说的,您的示例是实际代码的简化版本

© www.soinside.com 2019 - 2024. All rights reserved.