gpt4 book ai didi

java - 如何调用将附加内容加载到对象中并将其转换为另一个可观察对象的可观察对象?

转载 作者:行者123 更新时间:2023-12-02 02:29:45 25 4
gpt4 key购买 nike

我有这个 MyCollectionInteractor,它从 Firebase 数据库加载所有 CollectionItemVO:

public interface MyCollectionInteractor extends BaseInteractor{
Single<List<CollectionItemVO>> load ();
}

CollectionItemVO 是:

public class CollectionItemVO {
String beerId;
long timestamp;
int quantity;

public CollectionItemVO() {
}


public CollectionItemVO(String beerId, long timestamp, int quantity) {
this.beerId = beerId;
this.timestamp = timestamp;
this.quantity = quantity;
}
}

所以我有这个CollectionItem:

public class CollectionItem {

private final CollectionItemVO itemVOList;
private final Beer beer;

public CollectionItem(Beer beer, CollectionItemVO itemVOList) {
this.beer = beer;
this.itemVOList = itemVOList;
}

}

它有一个完整的 Beer 对象。为了加载该对象,我使用了另一个交互器:

public interface LoadBeerInteractor extends BaseInteractor {
Flowable<Beer> load(String beerId);
}

我想将此 CollectionInteractor.load 调用转换为发出 CollectionItemObservable 并且我想使用 LoadBeerInteractor.load (beerId) 传递带有完整啤酒对象的 CollectionItem。

根据我的研究,我相信使用平面 map 可以做到这一点,但我还没有达到预期的结果。

最佳答案

我认为你需要做这样的事情:

MyCollectionInteractor collections = ...
LoadBeerInteractor beers = ...

Flowable<CollectionItem> items = collections.load()
.toFlowable()
.flatMapIterable(it -> it) // unpack from Flow<List<T>> to Flow<T>
.flatMap(it ->
beers
.load(it.beerId)
.map(beer -> new CollectionItem(beer, it))
)

这也可能有效:

Flowable<CollectionItem> items = collections.load()
.toFlowable()
.flatMap(list ->
Flowable
.from(list)
.flatMap(it ->
beers
.load(it.beerId)
.map(beer -> new CollectionItem(beer, it))
)
)

关于java - 如何调用将附加内容加载到对象中并将其转换为另一个可观察对象的可观察对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47320550/

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