gpt4 book ai didi

java - 将许多 Single> 组合成 Single> 的最有效方法是什么?

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

我有一个函数loadApplesById接受 AppleId并返回 Single<List<Apple>> .

在另一个函数中,loadApplesByIdList我接受List<AppleId>作为参数。对于其中的每个元素,我必须调用 loadApplesByIdloadApplesByIdList还将返回 Single<List<Apple>> .

类似这样的事情:

Single<List<Apple> loadApplesById(AppleId appleId)
{
// magic to create and load the apple list.
return the Single.just(AppleList);
}


Single<List<Apple> loadApplesByIdList(List<AppleId> appleIdList)
{
// My question how to create this function (?)
// Approach (1)
return Observable.from(appleIdList).flatMap(
appleId -> this.loadApplesById(id)
.toObservable())
.reduce(new ArrayList<>(), (List<Apple> a, List<Apple> b)
-> { a.addAll(b); return a; }).toSingle();

// Approach (2)
return Observable.from(appleIdList).flatMap(appleId -> loadApplesById(id)
.toObservable())
.toSingle();

}

虽然这两种方法都可以编译,但它们都不起作用。

如果有人愿意花时间详细说明实现此目的的不同方法(使用 Fold、Reduce、FlatMap、ConcatMap)等,这将是一个很好的学习类(class)。

最佳答案

您必须展开每个单曲,将它们连接起来,然后再次收集起来:

Single<List<Apple>> allApples = 
Observable.fromIterable(appleIdList)
.concatMap(appleId ->
loadApplesById(appleId)
.flattenAsObservable(list -> list)
)
.toList();

不过,您需要 RxJava 2。

关于java - 将许多 Single<List<Type>> 组合成 Single<List<Type>> 的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53092649/

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