有人能给我解释一下这个循环吗?
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 个项目。
最佳答案
您的代码包含一个副作用:方法更新其上下文之外的对象(此处,map
方法更新其外部的列表)。
然后,当您循环遍历 rates
变量时,您的 for
循环非常奇怪,该变量也用于构建 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/