Lets sagen, ich habe eine beobachtbare Observable<List<A>>
und ich möchte es in eine Observable wie Observable<List<B>>
konvertieren. Gibt es einen bestmöglichen Weg, List<A>
in List<B>
umzuwandeln. Javascript ist map
's wie Implementierung wäre die ideale Situation.Konvertieren Sie einen Listentyp in einen anderen RXJava? (Javascript Karte entspricht)
5
A
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
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
vomObservable
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 innereObservable
seinen Abschluss sicherzustellen, so dasstoList()
verwendet werden können
Verwandte Themen
- 1. Konvertieren Sie einen Zeiger auf einen anderen Typ in Golang
- 2. Wie vergleicht man einen Listentyp von Objekt mit Listentyp Int
- 3. DynamoDB Index auf Karte oder Listentyp erstellen
- 4. So konvertieren Sie eine Tabellenspalte in einen anderen Datentyp
- 5. RxJava Faden nach concat Karte
- 6. Javascript: Konvertieren einer (hex) signierten Ganzzahl in einen JavaScript-Wert
- 7. Konvertieren eines gesamten String in einen Integer in JavaScript
- 8. So konvertieren Sie einen GeoPoint in einen Hardware-Bildschirmpunkt
- 9. Wie man einen anderen Arbeitsbereich erhält, der der Projektauswahl entspricht
- 10. Konvertieren Matlab zu Octave gibt es einen Container. Karte gleichwertig?
- 11. Drehen Sie einen Punkt um einen anderen Punkt in 2D
- 12. Injizieren Sie einen Dienst in einen anderen Dienst
- 13. In Mysql, können Sie einen Alias teilen, durch einen anderen?
- 14. Fügen Sie einen anderen Mediensichtpunkt zu meinem Javascript hinzu
- 15. Verwenden Sie Curry, um einen Wert zu erhöhen, bis es einem anderen Wert entspricht
- 16. Konvertieren von Karte in Struktur
- 17. Wie zeigt man einen anderen Bereichswert in der Ansicht an, der einem anderen Wert entspricht?
- 18. Geben Sie einen anderen öffentlichen Pfad an
- 19. Kopieren Sie einen Excel-Wert in einen JavaScript-Code
- 20. Generieren Sie eine Zeichenfolge, die einen RegEx in Python entspricht
- 21. Javascript entspricht .NETs DateTime.Parse
- 22. Befüllen Sie einen anderen Titel in einer anderen Vollkalenderansicht.
- 23. Transform 2 RxJava Observables auf 1 Karte
- 24. Laden Sie einen Vektor in Bildansicht von SD-Karte
- 25. C# Dictionary entspricht in JavaScript
- 26. Konvertieren eines Klassenpfaddateinamens in einen echten Dateinamen
- 27. Android Wie kann ich einen String in einen bearbeitbaren konvertieren
- 28. einen temporären Zeichen-Array in einen String in D Konvertieren
- 29. Konvertieren von Koordinaten in einen Ortsnamen
- 30. Fügen Sie einen Vektor in einen Vektor