Verstehen der Diskrepanz zwischen den Methoden „map()“ und „flatMap()“ von Java 8
In Java 8 sind sowohl „map()“ als auch „flatMap()“ Methoden können auf einen Stream
map()-Methode
Die Operation „map()“ generiert für jeden Eingabewert einen Ausgabewert. Im Wesentlichen wendet es eine Funktion auf jedes Element im Eingabestream an. Die Funktion nimmt den Eingabewert und erzeugt einen einzelnen Ergebniswert.
flatMap()-Methode
Im Gegensatz dazu kann die flatMap()-Operation eine beliebige Anzahl von Werten erzeugen ( einschließlich Null) für jeden Eingabewert. Dies wird durch ihr Argument ermöglicht: eine Funktion, die einen Wert annimmt und eine beliebige Anzahl von Werten zurückgibt.
Der Grund für diesen Unterschied ist, dass Java-Methoden nur null oder einen Wert zurückgeben können. flatMap() umgeht diese Einschränkung, indem es der Mapper-Funktion ermöglicht, einen Stream als Ausgabe zurückzugeben. Werte aus diesem Stream werden anschließend abgeleitet und an den Ausgabestream übergeben. Folglich gilt die Ausgabe als „abgeflacht“, da die Wertegruppierungen der Mapper-Funktion im Ausgabestream nicht unterscheidbar sind.
Verwendung
Typischerweise wird flatMap() verwendet, wenn Die Mapper-Funktion beabsichtigt, Nullwerte (mit Stream.empty()) oder mehrere Werte (mit Stream.of(a, b, c)) zurückzugeben. Dennoch kann jede Art von Stream zurückgegeben werden.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „map()' und „flatMap()' in Java 8 Streams?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!