2016-08-03 4 views
2

Я хочу собрать все предметы, выпущенные в коллекции. Я делаю это так:Конвертировать наблюдаемый в коллекцию в RxJava

List found = new ArrayList(); 
controller.search(query) 
      .doOnCompleted(new Action0() { 
      @Override 
      public void call() { 
       //Do something with "found" list 
      } 
     }).subscribe(new Action1<String>() { 
      @Override 
      public void call(String item) { 
       found.add(item); 
      } 
     }); 

Есть ли встроенный способ RxJava, чтобы осуществить это?

ответ

3

Используйте toList, чтобы собрать испускаемые строки и испустить их как один список после того, как наблюдаемые завершатся, например.

2

Если ваш запрос Запрос возврата, вы можете использовать оператор сканирования для объединения списка для каждого испускаемого элемента.

@Test 
public void collectCollections() { 
    Observable.from(Arrays.asList(1, 2, 3)) 
       .map(Arrays::asList) 
       .scan(new ArrayList<Integer>(), (l1, l2) -> { 
        l1.addAll(l2); 
        return l1; 
       }).subscribe(System.out::println); 
} 

Вы можете увидеть больше примеров здесь https://github.com/politrons/reactive

Смежные вопросы