2017-11-24 22 views
0

このオブジェクトのデータには、String型のデータ、ArrayListタイプのデータが含まれます。RxJavaを使用するループ

Flowable.just(rxjava.list1).concatMap(new Function<ArrayList<Data>, Publisher<Data>>() { 
      @Override 
      public Publisher<Data> apply(ArrayList<Data> data) throws Exception { 
       return Flowable.fromIterable(data); 
      } 
     }).doOnNext(new Consumer<Data>() { 
      @Override 
      public void accept(Data data) throws Exception { 
       Flowable.fromIterable(data.data).filter(new Predicate<String>() { 
        @Override 
        public boolean test(String s) throws Exception { 
         return "d".equals(s); 
        } 
       }).subscribe(new Consumer<String>() { 
        @Override 
        public void accept(String s) throws Exception { 
         System.out.println(data.name+" loop done"); 
         data.name=data.name+"done"; 
        } 
       }); 
      } 
     }).subscribe(new Consumer<Data>() { 
      @Override 
      public void accept(Data data) throws Exception { 
       System.out.println("data name ==> "+data.name); 
      } 
     }); 

私はより良くしたいです。例えば、他の人が理解しやすくするか、より簡潔に記述することは容易です。変更する方法?

+0

まず、あなたがやろうとしているかを説明! –

+0

ちょうど1つのルーパが別のルーパを入れ子にしている、私は1つのチェーンに変更したいが、私のコードは1つであるFlowableネストされた別のFlowable @ SarathKn – user9000455

答えて

0

使用concatMap

Flowable.fromIterable(rxjava.list1) 
.concatMap(data -> 
    Flowable.fromIterable(data.data) 
    .filter(s -> "d".equals(s)) 
    .doOnNext(s -> { data.name = data.name + "done" }) 
    .ignoreElements() 
    .andThen(Flowable.just(data)) 
) 
.subscribe(data -> { 
    System.out.println("data name ==> "+data.name); 
}); 
関連する問題