从RxJava开始,循环

Fin*_*ion 2 java android rx-java

有人能告诉我如何更改java的默认代码:

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

    for(Rates rates : ratesList)
        rateItemArrayList.add(new RateItem(rates.getName(),rates.getCode(),rates.getValue()));

    return rateItemArrayList;
}
Run Code Online (Sandbox Code Playgroud)

在RxJava中编码?我刚开始,我无法处理基础知识:(

编辑

我不知道为什么这个循环迭代次数比我的List响应的次数多.然后我的新Arraylist有1300件而不是30件.有什么问题?

 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 rat) {
                    for(Rates ratt : rates)
                        rateItemArrayList.add(new RateItem(ratt.getName(),ratt.getCode(),ratt.getValue()));
                    return rateItemArrayList;
                }
            });

    return observable;
}
Run Code Online (Sandbox Code Playgroud)

@Weava我不知道,但我不能制作你的代码,AS自动生成如上所述的代码.

Tas*_*kos 6

private Observable<RateItem> generateRates(List<Rates> ratesList){
   return Observable
     .from(ratesList)
     .map(rates -> new RateItem(rates.getName(),rates.getCode(),rates.getValue());
}
Run Code Online (Sandbox Code Playgroud)

实际上,我甚至会跳过List<anything>实际使用(不是模块间API,而是模块内协调),在这种情况下整个方法变成一个简单的调用:

.map(rates -> new RateItem(rates.getName(),rates.getCode(),rates.getValue());
Run Code Online (Sandbox Code Playgroud)

实际上,我只是说将构造函数重构为RateItem中的一个单独的静态方法,最好是构造函数,然后它就是

.map(RateItem::new);
Run Code Online (Sandbox Code Playgroud)