我有以下要求:遍历一个数组,并为每个元素发出一个方法,该方法有时可以返回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
。
谢谢!
您应该使用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,但是正如您所说的,您的示例是实际代码的简化版本