Wenn Sie einen Stream von einem Array in Java abrufen möchten, können Sie ihn mithilfe der Methode "Stream.of ()" oder der Methode "Arrays.stream ()" abrufen.
Auf den ersten Blick schienen beide Methoden das gleiche Ergebnis zu liefern, und ich kannte den Unterschied zwischen diesen Methoden nicht.
Als ich den Unterschied zwischen diesen beiden Methoden untersuchte, stellte ich fest, dass es zwei Hauptunterschiede gab.
Wenn ein Array primitiver Typen (z. B. int []) als Argument für diese Methoden verwendet wird, sind die zurückgegebenen Typen unterschiedlich.
Wenn beispielsweise int [] als Argument verwendet wird, gibt die Methode "Stream.of ()" "Stream" zurück, während die Methode "Arrays.stream ()" IntStream "zurückgibt.
Da die ideale Klasse für die Verarbeitung mit einem Stream vom primitiven Typ ein primitiver Stream wie "IntStream" ist, muss er bei Verwendung der Methode "Stream.of ()" in einen primitiven Stream konvertiert werden.
Es kann mit Methoden wie "Stream.flatMapToInt ()" und "Stream.flatMapToLong ()" konvertiert werden.
Wenn Sie versuchen, einen Stream aus einem Array primitiver Typen abzurufen, unterstützt die Methode Arrays.stream ()
nur drei primitive Typen: int [], long [], double [].
So kann beispielsweise char [] nicht als Argument für die Methode "Arrays.stream ()" verwendet werden.
Der Referenztyp kann jedoch problemlos als Argument verwendet werden.
Andererseits verfügt die Methode "Stream.of ()" über generische Argumente, sodass jeder Array-Typ als Argument verwendet werden kann.
Die obigen Inhalte sind in der folgenden Tabelle 1 zusammengefasst.
Tabelle 1. Beziehung zwischen jeder Methode und dem Array-Typ, der für das Argument verwendet werden kann
Der für das Argument verwendete Array-Typ | Arrays.stream() | Stream.of() |
---|---|---|
Doppeltyp | ○ | ○ |
Float-Typ | × | ○ |
langer Typ | ○ | ○ |
int type | ○ | ○ |
kurzer Typ | × | ○ |
Bytetyp | × | ○ |
char type | × | ○ |
Boolescher Typ | × | ○ |
Zeichenfolgentyp | ○ | ○ |
Klassentyp | ○ | ○ |
Aus dem oben Gesagten gibt es Unterschiede zwischen der Methode "Stream.of ()" und der Methode "Arrays.stream ()" im Rückgabetyp und den Typen, die auf die Argumente angewendet werden können. Seien Sie daher besonders vorsichtig, wenn Sie ein Array primitiver Typen verwenden. Ich fand es notwendig.
Als Eindruck eines Individuums scheint es sicher zu sein, die Methode "Stream.of ()" zu verwenden. Wir würden uns freuen, wenn Sie uns Ihre Meinung zur richtigen Anwendung dieser Methoden mitteilen könnten.
Vielen Dank für das Lesen bis zum Ende.
https://www.geeksforgeeks.org/difference-between-stream-of-and-arrays-stream-method-in-java/ https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/util/Arrays.html https://docs.oracle.com/javase/jp/11/docs/api/java.base/java/util/stream/Stream.html
Recommended Posts