[Java] Der Unterschied zwischen den Methoden Stream.of () und Arrays.stream (), den Sie nicht unerwartet kennen

Einführung

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.

1. Unterschied im zurückgegebenen Typ

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.

2. Ob das Argument generisch ist

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

abschließend

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.

Referenz

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

[Java] Der Unterschied zwischen den Methoden Stream.of () und Arrays.stream (), den Sie nicht unerwartet kennen
[Java] Der Unterschied zwischen den Methoden Stream.of () und Arrays.stream (), den Sie nicht unerwartet kennen
Unerwartet unbekannte Java-Zusammenfassung für reservierte Wörter
Bequeme Verwendung von Map, die Sie nicht unerwartet kennen
[Java] Verstehe den Unterschied zwischen List und Set
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
[Java-Anfänger] Unterschied zwischen Länge und Länge () ~ Ich weiß nicht ~
[Java] Unterschied zwischen == und gleich
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
[Java] Überprüfen Sie den Unterschied zwischen orElse und orElseGet mit IntStream
Denken Sie über die Unterschiede zwischen Funktionen und Methoden nach (in Java)
[JAVA] Unterschied zwischen Abstract und Interface
[Java] Unterschied zwischen Array und ArrayList
[Java] Was ist der Unterschied zwischen Form, Entität und dto? [Bohne]
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
[Java] Unterschied zwischen Länge, Länge () und Größe ()
Interpretieren Sie die Beziehung zwischen Java-Methoden und Argumenten in biochemischen Formeln
Verstehen Sie den Unterschied zwischen int und Integer und BigInteger in Java und float und double
Unterschied zwischen final und Immutable in Java
[Für Anfänger] Unterschied zwischen Java und Kotlin
Über den Unterschied zwischen irb und pry
[Java] Unterschied zwischen Intstream-Bereich und rangeClosed
Unterschied zwischen int und Integer in Java
[Java] Unterschied zwischen gleich und == in einer Zeichenfolge, die ein Referenztyp ist
[iOS] Verstehe den Unterschied zwischen Frame und Grenzen
[Rails / Active Record] Über den Unterschied zwischen create und create!
Unterschied zwischen next () und nextLine () in Java Scanner
Was ist der Unterschied zwischen SimpleDateFormat und DateTimeFormatter? ??
Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen
[Java] Unterschied zwischen "endgültiger Variable" und "unveränderlichem Objekt"
Fehlerprotokolle und Ausnahmebehandlung, die häufig im Java-Bereich angezeigt werden
[Java] Hinweis zum Unterschied zwischen Äquivalenzbeurteilung und Gleichheitsbeurteilung beim Vergleich von String-Klassen
[Ruby] Unterschied zwischen get und post
Holen Sie sich das Ergebnis von POST in Java
[Ruby] Ich habe über den Unterschied zwischen each_with_index und each.with_index nachgedacht
[Rails] Ich habe den Unterschied zwischen Ressourcen und Ressourcen untersucht
Was ist der Unterschied zwischen Systemspezifikation und Funktionsspezifikation?
Unterschiede zwischen Klassen und Instanzen in Ruby
Informationen zur Beziehung zwischen HTTP-Methoden, Aktionen und CRUD
[Java] Unterschied zwischen statischem final und final in Mitgliedsvariablen
[Rails] Was ist der Unterschied zwischen Redirect und Rendering?
Vergleichen Sie den Unterschied zwischen Docker-Datei vor und nach Docker-Slim
Was ist der Unterschied zwischen Überspringen und Ausstehend? [RSpec]
[Swift] UITextField hat mir den Unterschied zwischen Null und "" beigebracht.
Jetzt im dritten Jahr ist das Missverständnis, das ich bemerkt habe, der Unterschied zwischen der Gleichheitsmethode und ==