gpt4 book ai didi

java - RxJava解释这个循环

转载 作者:搜寻专家 更新时间:2023-11-01 09:41:42 27 4
gpt4 key购买 nike

谁能给我解释一下这个循环?

  private Observable<ArrayList<RateItem>> generateRates(List<Rates> rates){
rateItemArrayList = new ArrayList<RateItem>();

Observable<ArrayList<RateItem>> observable = Observable.from(rates)
.map(new Func1<Rates, ArrayList<RateItem>>() {
@Override
public ArrayList<RateItem> call(Rates r) {
for(Rates rat : rates)
rateItemArrayList.add(new RateItem(rat.getName(),rat.getCode(),rat.getValue()));
return rateItemArrayList;
}
});
return observable;
}

我的列表在服务器响应后有 35 个(选中的)项目,然后我想从这个列表中创建不同的 ArrayList。为什么这个循环迭代大约 1000 次而不是 35 次?之后我的新 ArrayList 有 1350 个项目 o.O.

最佳答案

你的代码包含一个副作用:一个方法在他的上下文之外更新一个对象(这里,map 方法更新它之外的一个列表)。

那么你的 for 循环就很奇怪了,因为你遍历 rates 变量,它也用于构建 Observable。 (我认为这不是预期的)

你的代码可以更简单,使用无副作用的代码:

 private Observable<List<RateItem>> generateRates(List<Rates> rates){
return Observable.from(rates)
.map(r -> new RateItem(r.getName(), r.getValue())
.toList();
}

它应该非常接近您想要实现的目标。

关于java - RxJava解释这个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39621247/

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