Ein Java-Stream ist eine der Sammlungskomponenten und die API für die interne Iteration seiner Elemente. Das heißt, er kann seine eigenen Elemente iterieren, wenn wir die Iterationsfunktionen der Java-Sammlungen verwenden möchten, z. B. einen Java-Iterator oder Java Für jede Schleife mit einer iterierbaren Java-Schnittstelle muss die Elementiteration implementiert werden. Die Streams ändern den Wert im Datenstrukturspeicher nicht und die Ergebnisse werden mithilfe von Standardmethoden bereitgestellt, denen wir den Standardraum wie eine Pipeline-Struktur zuweisen können die gewünschten Ergebnisse erzeugen.
Das erste ist wahrscheinlich das wichtigste Argument für die Einführung einer Stream-Methode in die Sammlungsschnittstelle. Sobald die Liste der Elemente angezeigt wird, werden die Stream-Daten mit einem bestimmten Stream geöffnet. Die einfachste und beliebteste Aktion ist die forEach()-Schleife, die die Stream-Elemente durchläuft und für jedes einzelne die angegebene Funktion aufruft. Diese Methode ist ebenfalls weit verbreitet und wurde in Iterable-, Map- und anderen Klassen integriert. Streams sind nichts anderes als Daten-Wrapper, sie wollen die Daten nicht speichern oder die zugrunde liegende Datenquelle beeinflussen. Viele nützliche und leistungsstarke Vorgänge werden durch Streams unterstützt, die prägnant mit Lambdas beschrieben werden, die sequentiell oder parallel ausgeführt werden können. Ein Stream ist keine Datenstruktur, da er keine Daten speichert. Es werden auch keine Änderungen an der zugrunde liegenden Datenquelle vorgenommen. Es spielt keine Rolle, ob unsere Daten sequentiell verarbeitet werden oder nicht, wenn die Daten parallel zu unserem Stream geordnet sind. Die Implementierung behält die Stream-Reihenfolge bei. Im Allgemeinen ist der Stream threadsicher, wenn der verwendete Spliterator über die CONCURRENT-Eigenschaft verfügt. Die Stream-API definiert eine Reihe von Verträgen für jeden Schritt der Pipeline. Wenn einer von ihnen fehlerhaft ist, kann es zu unerwartetem Verhalten oder Ausnahmen kommen.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
Die Streams nehmen die Eingaben von den Sammlungen, Arrays und anderen Eingabe-/Ausgabekanälen entgegen. Dies sind die Möglichkeiten, die Eingaben an die Funktion weiterzuleiten. Mit Hilfe eines Neu- und Objekterstellungsverfahrens wird das Objekt erstellt und für den spezifischen Funktionsaufruf zugewiesen. Außerdem lieferten die Streams nur die Ausgabeergebnisse gemäß der Pipeline-Architektur und ihren Methoden. Der Wert und der tatsächliche Datenstrukturprozess werden dadurch nicht verändert. Außerdem werden die Sammlungen hauptsächlich mit Hilfe anderer und externer Schleifen iteriert, aber wenn wir sie zum Streamen verwenden, müssen sie intern mit Hilfe spezifischer Schleifenoperationen iteriert werden, meist sind externe Schleifen nicht erforderlich. Eine der Terminalmethoden der Stream-API in Java 8 ist die Methode „collect()“ zum Sammeln der Daten. Es ermöglicht uns, veränderliche Faltoperationen mithilfe von Datenkomponenten durchzuführen, die in einer Stream-Instanz enthalten sind (z. B. Elemente in Datenstrukturen neu verpacken und zusätzliche Logik anwenden, sie verketten usw.). In der Collectors-Klasse finden Sie alle vordefinierten Implementierungen. Um von einer besseren Lesbarkeit zu profitieren, ist es üblich, den folgenden statischen Import zu verwenden. Um alle Stream-Elemente in einem List-Objekt zusammenzufassen, verwenden Sie den toList-Collector. Das Entscheidende ist, dass wir bei dieser Technik keine bestimmte List-Implementierung voraussetzen können. Wir können stattdessen toCollection verwenden, wenn wir mehr Kontrolle darüber haben möchten. Um alle Stream-Elemente in einer Set-Instanz zusammenzufassen, verwenden Sie den toSet-Kollektor. Es ist wichtig zu erkennen, dass wir bei Verwendung dieser Methode keine bestimmte Set-Implementierung voraussetzen können. Wir können stattdessen eine Sammlung verwenden, wenn wir mehr Kontrolle darüber haben möchten. Es gibt keine doppelten Elemente in einem Set. Wenn unsere Sammlung identische Komponenten enthält, erscheinen diese nur einmal im endgültigen Set. Um Stream-Elemente in einer Map-Instanz zusammenzufassen, verwenden Sie den toMap-Collector. Dazu benötigen wir zwei Funktionen: keyMapper und valueMapper. Um einen Map-Schlüssel aus einem Stream-Element zu extrahieren, verwenden wir keyMapper, und um einen mit einem bestimmten Schlüssel verknüpften Wert abzurufen, verwenden wir valueMapper.
In Java gibt es verschiedene Möglichkeiten, Streams zu erstellen, z. B. durch die Verwendung von Sammlung, das Erstellen von Stream-Daten aus angegebenen Werten. Außerdem wird mithilfe der Stream-Daten ein Array erstellt und mithilfe von Stream die Leerräume berechnet. Die Methode empty() berechnet nicht nur Leerräume, wir können auch Stream-Daten mit Stream erstellen. builder()-Methode. Mit Hilfe der iterate()-Methode können wir die unendlichen Stream-Daten berechnen, da Iterable die Schnittstelle ist und keine Standardmethode bereitstellt. StreamSupport.Stream()-Methode und Stream-Daten mithilfe des Iterable-Objekts abrufen.
import java.util.*; import java.util.stream.*; class first { private static <T> void methd(Iterable<T> itr) { Stream<T> str = StreamSupport .stream(itr.spliterator(), false); Iterator<T> its = str.iterator(); while (its.hasNext()) { System.out.print(its.next() + " "); } } public static void main(String[] args) { Iterable<String> itr = Arrays.<em>asList</em>("Marina", "Adyar", "Parrys or Broadway","Tambaram","Gundy"); methd(itr); } }
Beispielausgabe:
In the above example we used Stream Instance creation and also we can use the StreamSupport class for accessing the stream() method. Like that we can use the Iterator<> interface for accessing the stream inputs and assign it to the variable. In the main method using Iterable<> interface we can access the values as Arrays and asList() method.
import java.util.*; import java.util.stream.*; class Second { private static <T> void methd(Iterator<T> itr) { Spliterator<T> splititr = Spliterators spliteratorUnknownSize(itr, Spliterator.NONNULL); Stream<T> str = StreamSupport.<em>stream</em>(splititr, false); Iterator<T> its = str.iterator(); while (its.hasNext()) { System.<em>out</em>.print(its.next() + " "); } } public static void main(String[] args) Iterator<String> itre = Arrays .asList("Thiruvanmaiyur", "Perungalathur", "TNagar","Central","Besant Nagar") .iterator(); methd(itre); } }
Sample Output:
In the above example, we used an additionally Spliterator class for accessing the Stream inputs using Iterator interface we can access the Array List inputs using the asList() method.
While streams aren’t used by everyone and don’t necessarily indicate a superior approach, free certificate courses can help developers understand this newer way of programming, which incorporates functional-style programming and lambda expressions for Java. It’s up to developers to determine whether to use functional or imperative programming styles, and by taking advantage of free certificate courses, they can learn how to effectively combine both ideas to enhance their programs with enough effort.
Das obige ist der detaillierte Inhalt vonJava Collection Stream. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!