有人能解释一下这个循环吗?
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();
}
它应该非常接近你想要达到的目标。