2016-06-11 2 views

Antwort

4

Sie Observable.from(Iterable<A>)Observable<A> bekommen können, wo es (A => B), und List<B> mit Observable.toList()

Observable.from(Arrays.asList(1, 2, 3)) 
.map(val -> mapIntToString(val)).toList() 

Z. B. konvertieren

Observable.from(Arrays.asList(1, 2, 3)) 
.map(val -> val + "mapped").toList() 
.toBlocking().subscribe(System.out::println); 

ergibt

[1mapped, 2mapped, 3mapped]

0

Sie auch komponieren können, die eine beobachtbare erhalten und wird eine andere zurück.

Observable.Transformer<Integer, String> transformIntegerToString() { 
    return observable -> observable.map(String::valueOf); 
    } 


    @Test 
public void observableWithTransformToString() { 
    Observable.from(Arrays.asList(1,2,3)) 
       .map(number -> { 
        System.out.println("Item is Integer:" + Integer.class.isInstance(number)); 
        return number; 
       }) 
       .compose(transformIntegerToString()) 
       .subscribe(number -> System.out.println("Item is String:" + (String.class.isInstance(number)))); 

} 

Sie können weitere Beispiele siehe hier

https://github.com/politrons/reactive

2

antwortete ich eine ähnliche Frage hier: https://stackoverflow.com/a/42055221/454449

ich die Antwort hier der Einfachheit halber kopiert haben (nicht sicher, ob das geht gegen die Regeln):

Wenn Sie die Lists von der Quelle 01 emittiert beibehalten möchtensondern wandeln die Inhalte, das heißt Observable<List<SourceObject>> zu Observable<List<ResultsObject>>, können Sie etwas tun:

Observable<List<SourceObject>> source = ... 
source.flatMap(list -> 
     Observable.fromIterable(list) 
      .map(item -> new ResultsObject(item)) 
      .toList() 
      .toObservable() // Required for RxJava 2.x 
    ) 
    .subscribe(resultsList -> ...); 

Dies stellt sicher, ein paar Dinge:

  • Die Zahl der Lists vom Observable emittiert wird beibehalten. das heißt, wenn die Quelle 3 emittiert Listen, wird es 3 transformiert Listen auf dem anderen Ende sein
  • Observable.fromIterable() verwendet, wird die innere Observable seinen Abschluss sicherzustellen, so dass toList()
  • verwendet werden können
Verwandte Themen