Tutorials  /  JavaScript

Java Stream collect() Methode - Beispiele

Ccentron Redaktion · April 2024 ·4 Min. Lesezeit ·JavaScript, Tutorial

Java Stream collect() führt eine veränderbare Reduktionsoperation auf den Elementen des Streams durch. Dies ist eine Endoperation.

Was ist eine veränderbare Reduktionsoperation?

Eine veränderbare Reduktionsoperation verarbeitet die Stromelemente und sammelt sie dann in einem veränderbaren Ergebnisbehälter. Sobald die Elemente verarbeitet sind, führt eine Kombinationsfunktion alle Ergebnisbehälter zusammen, um das Ergebnis zu erstellen.

VM

Passende Infrastruktur bei centron

Node-Anwendungen wollen deployt werden: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat – oder gleich als Managed Server, wenn der Betrieb nicht bei Ihnen liegen soll. Cloud Server mieten →

Java Stream collect() Methodensignatur

Es gibt zwei Varianten der Java Stream collect()-Methode.

Code
<R> R collect(Supplier<R> supplier, BiConsumer<R, ? super T> accumulator,BiConsumer<R, R> combiner)
Code
<R, A> R collect(Collector<? super T, A, R> collector)

Collector ist eine Schnittstelle, die einen Wrapper für die Supplier-, Accumulator- und Combiner-Objekte bereitstellt. Die zweite Methode ist nützlich, wenn wir die Collectors-Klasse verwenden, um eine integrierte Collector-Implementierung bereitzustellen. Die drei Parameter der collect()-Funktion sind:

  • supplier: eine Funktion, die einen neuen veränderbaren Ergebnisbehälter erstellt. Für die parallele Ausführung kann diese Funktion mehrmals aufgerufen werden und muss jedes Mal einen neuen Wert zurückgeben.
  • accumulator ist eine zustandslose Funktion, die ein Element in einen Ergebnisbehälter einfügen muss.
  • combiner ist eine zustandslose Funktion, die zwei teilweise Ergebnisbehälter annimmt und zusammenführt, was mit der accumulator Funktion kompatibel sein muss.

Stream collect() Methodenbeispiele

Lassen Sie uns einige Beispiele für die Stream.collect()-Methode betrachten.

1. Verkettung von Zeichenkettenlisten

Angenommen, Sie möchten die Liste der Zeichenketten verkettet, um eine neue Zeichenkette zu erstellen. Wir können die Stream collect()-Funktion verwenden, um eine veränderbare Reduktionsoperation durchzuführen und die Listenelemente zu verkettet.

Code
List<String> vowels = List.of("a", "e", "i", "o", "u");    // sequential stream - nothing to combine
StringBuilder result = vowels.stream().collect(StringBuilder::new, (x, y) -> x.append(y),
		(a, b) -> a.append(",").append(b));
System.out.println(result.toString());
// parallel stream - combiner is combining partial results
StringBuilder result1 = vowels.parallelStream().collect(StringBuilder::new, (x, y) -> x.append(y),
		(a, b) -> a.append(",").append(b));
System.out.println(result1.toString());

Output:

Code
aeiou
a,e,i,o,u

2. Stream collect() zu einer Liste mit der Collectors-Klasse

Die Collectors-Klasse bietet viele nützliche Implementierungen der Collector-Schnittstelle. Betrachten wir ein Beispiel, bei dem wir die Liste der Ganzzahlen filtern, um nur gerade Zahlen auszuwählen. Stream filter() ist eine Zwischenoperation und gibt einen Stream zurück. Daher werden wir die collect()-Funktion verwenden, um die Liste aus diesem Stream zu erstellen.

Code
List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream().filter(x -> x % 2 == 0).collect(Collectors.toList());
System.out.println(evenNumbers);  // [2, 4, 6]

3. Stream collect() zu einem Set

Wir können Collectors.toSet() verwenden, um die Stromelemente in ein neues Set zu sammeln.

Code
List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6);
Set<Integer> oddNumbers = numbers.parallelStream().filter(x -> x % 2 != 0).collect(Collectors.toSet());
System.out.println(oddNumbers); // [1, 3, 5]

4. Collectors joining() Beispiel

Wir können Collectors.joining()-Methoden verwenden, um einen Collector zu erhalten, der die Eingabe-CharSequence-Elemente des Streams in der Begegnungsreihenfolge verkettet. Wir können dies verwenden, um einen Stream von Zeichenketten, StringBuffer oder StringBuilder zu verkettet.

Code
jshell> String value = Stream.of("a", "b", "c").collect(Collectors.joining());
value ==> "abc"
jshell> String valueCSV = Stream.of("a", "b", "c").collect(Collectors.joining(","));
valueCSV ==> "a,b,c"
jshell> String valueCSVLikeArray = Stream.of("a", "b", "c").collect(Collectors.joining(",", "{", "}"));
valueCSVLikeArray ==> "{a,b,c}"
jshell> String valueObject = Stream.of("1", new StringBuffer("2"), new StringBuilder("3")).collect(Collectors.joining());
valueObject ==> "123"

Fazit

Java Stream collect() wird meistens verwendet, um die Stromelemente in einer Sammlung zu sammeln. Es ist eine Endoperation. Sie kümmert sich um die Synchronisation, wenn sie mit einem parallelen Stream verwendet wird. Die Collectors-Klasse bietet viele Collector-Implementierungen, um uns zu unterstützen.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren