flatmap

___ tag123collections ___ Auflistungs-APIs stellen Entwicklern eine Reihe von Klassen und Schnittstellen zur Verfügung, mit denen die Sammlung von Objekten vereinfacht wird. ___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123java8 ___ Verwenden Sie dieses Tag für spezifische Fragen zu Java 8, Version 8 (interne Nummer 1.8) der Java-Plattform, die am 18. März 2014 veröffentlicht wurde. In den meisten Fällen sollten Sie auch das Java-Tag angeben. ___ qstntxt ___

Als Beispiel für Datenklassen wird Folgendes angegeben:

%Vor%

Vorausgesetzt, ich hätte eine Liste der Länder

%Vor%

Und ich wollte diese in ihre Regionen und ihre entsprechenden Namen streamen. Ich möchte folgendes tun:

%Vor%

Dieser Code wird jedoch nicht kompiliert, da der Rückgabewert von "getRegions" eine Collection (Liste) im Gegensatz zu einem Stream ist, den die flatMap-Methode akzeptiert. Aber da ich weiß, dass jede Sammlung über seine Collection.stream () -Methode gestreamt werden kann, sollte das kein Problem sein. Trotzdem muss ich es wie folgt schreiben:

%Vor%

Was (in einem reicheren Kontext) viel weniger lesbar ist als das erste.

Die Frage ist, gibt es einen Grund, den ich verpasse, um so sperrig zu sein? Ich habe viele Beispiele in unserem Rahmen, in denen ich gezwungen bin, diesen Weg einzuschlagen, wobei ich immer einen sauren Geschmack hinterlasse. (Ich denke, ich muss nur Kotlin zu unseren Projekten hinzufügen und die Stream-Klasse um eine flatMap-Methode erweitern, die eine Collection verwendet: p oder tue ich?)

    
___ tag123javastream ___ Verwenden Sie dieses Tag für Fragen zur Verwendung der Stream-API. Es wurde in Java 8 eingeführt und unterstützt funktionale Operationen für Datenströme, z. B. Filter-Map-Reduce-Pipelines in Sammlungen. ___ answer42142505 ___

Ein technischer Grund, der nicht ideal ist, könnte aber sein, warum dies nicht gemacht wurde. Sie können einen generischen Typ in Java nicht überladen.

Sie müssen

unterstützen %Vor%

was bedeutet, dass sie nicht mit

überladen werden können %Vor%

Diese beiden Methoden haben nach dem Löschen die gleiche Signatur.

Sie könnten eine Methode hinzufügen

%Vor%

oder

%Vor%

aber es wäre nicht hübsch.

    
___ qstnhdr ___ Warum kann Stream.flatMap keine Sammlung akzeptieren? ___ ___ tag123flatmap flatMap ist eine Funktion, die Scala durch Anwenden einer Funktion ist, die für jedes Element in der Liste eine Folge zurückgibt, und die Ergebnisse in der ursprünglichen Liste Abflachen. ___
1
Antwort

Warum kann Stream.flatMap keine Sammlung akzeptieren?

Als Beispiel für Datenklassen wird Folgendes angegeben: %Vor% Vorausgesetzt, ich hätte eine Liste der Länder %Vor% Und ich wollte diese in ihre Regionen und ihre entsprechenden Namen streamen. Ich möchte folgendes tun: %Vor% Dieser C...
09.02.2017, 16:52