Die Stream Reduce-Operation in Java
- Was ist Reduktion in Java
-
Stream
reduce()
-Operation in Java 8 -
Finden der Summe mit der Operation
reduce()
in Java -
Finden der Summe mit
reduce()
und Methodenreferenz in Java -
Ermitteln von Min und Max mit der Operation
reduce()
in Java - Fazit
In diesem Tutorial werden die Einzelheiten der Operation reduce()
und einige ihrer Beispiele erläutert. Bevor wir die Operation reduce()
besprechen. Lassen Sie uns zuerst die Reduktion besprechen.
Was ist Reduktion in Java
Viele Terminaloperationen (wie Durchschnitt, Summe, Min, Max und Anzahl) im JDK kombinieren den Inhalt eines Streams, um einen einzelnen Wert auszugeben. Die Reduktionsoperation tut dasselbe und gibt einen einzelnen Stream zurück.
Darüber hinaus enthält das JDK Reduktionsoperationen, die eine Sammlung statt eines einzelnen Werts zurückgeben. Viele Reduktionsprozesse erfüllen eine bestimmte Aufgabe, z. B. das Berechnen des Durchschnitts von Werten oder das Kategorisieren von Elementen.
Das JDK hingegen verfügt über allgemeine Reduktionsoperationen, die als Reduzieren und Sammeln bekannt sind.
Stream reduce()
-Operation in Java 8
Die Operation reduce()
ist eine Allzweck-Reduktionsoperation. Die Syntax der Operation reduce()
lautet:
T reduce(T identity, BinaryOperator<T> accumulator)
Es gibt zwei Argumente für die Reduktionsoperation:
identity
: Das Elementidentity
ist sowohl der Anfangswert der Reduktion als auch das Standardergebnis, wenn der Stream keine Elemente enthält.accumulator
: Die Funktionaccumulator
akzeptiert zwei Argumente: ein Teilreduktionsergebnis und das nächste Element des Streams. Sie liefert uns ein neues Teilergebnis.
Die Operation reduce()
ist eine Art Terminaloperation.
Finden der Summe mit der Operation reduce()
in Java
Berechnen wir die Summe aller Elemente eines Arrays mithilfe der Stream-API in Java. Sehen Sie sich den folgenden Code an:
import java.util.Arrays;
public class SimpleTesting {
public static void main(String args[]) {
int[] numbers = {45, 56, 87, 323, 47, 20, 658, 985, 78, 123};
int sum = Arrays.stream(numbers).reduce(0, (a, b) -> a + b);
System.out.print("sum: " + sum);
}
}
Ausgabe:
sum: 2422
Wenn wir die Funktion reduce()
nicht verwenden, müssen wir den folgenden Code schreiben, um die Summe aller Elemente zu erhalten. Siehe das Beispiel unten.
import java.util.Arrays;
public class SimpleTesting {
public static void main(String args[]) {
int[] numbers = {45, 56, 87, 323, 47, 20, 658, 985, 78, 123};
int sum = 0;
for (int i : numbers) {
sum += i;
}
System.out.println("sum : " + sum);
}
}
Ausgabe:
sum : 2422
Finden der Summe mit reduce()
und Methodenreferenz in Java
Wir können auch die sum()
-Methodenreferenz Integer::sum
wie folgt übergeben, um die Summe aller Elemente zu erhalten. Sehen Sie sich den folgenden Code an:
import java.util.Arrays;
public class SimpleTesting {
public static void main(String args[]) {
int[] numbers = {45, 56, 87, 323, 47, 20, 658, 985, 78, 123};
int sum = Arrays.stream(numbers).reduce(0, Integer::sum);
System.out.print("sum: " + sum);
}
}
Ausgabe:
sum: 2422
Wenn das Array leer ist und wir es übergeben, um die Summe der Elemente zu erhalten, löst es keine Ausnahme aus, sondern gibt ein Nullergebnis zurück. Siehe das Beispiel unten.
import java.util.Arrays;
public class SimpleTesting {
public static void main(String args[]) {
int[] numbers = {};
int sum = Arrays.stream(numbers).reduce(0, Integer::sum);
System.out.print("sum: " + sum);
}
}
Ausgabe:
sum: 0
Wie wir sehen können, wird das Identitätselement zurückgegeben, wenn das Array leer ist.
Ermitteln von Min und Max mit der Operation reduce()
in Java
Um das Min- und Max-Element in einem Array zu finden, verwenden wir im Allgemeinen eine Kombination aus for
-Schleifen und if-else
-Anweisungen wie:
public class SimpleTesting {
public static void main(String args[]) {
int[] numbers = {45, 56, 87, 323, 47, 20, 658, 985, 78, 123};
// finding the min element
int min = numbers[0];
for (int i : numbers) {
if (min > i) {
min = i;
}
}
// finding the max element
int max = numbers[0];
for (int i : numbers) {
if (max < i) {
max = i;
}
}
// printing the max and min value
System.out.println("max: " + max);
System.out.println("min: " + min);
}
}
Ausgabe:
max: 985
min: 20
Wir können das min- und max-Element in einem Array mit der Operation reduce()
finden, die unseren Code prägnanter macht. Siehe das Beispiel unten.
import java.util.Arrays;
public class SimpleTesting {
public static void main(String args[]) {
int[] numbers = {45, 56, 87, 323, 47, 20, 658, 985, 78, 123};
// finding the min element
int min = Arrays.stream(numbers).reduce(Integer.MAX_VALUE, (a, b) -> a < b ? a : b);
// finding the max element
int max = Arrays.stream(numbers).reduce(Integer.MIN_VALUE, (a, b) -> a > b ? a : b);
// printing the max and min value
System.out.println("max: " + max);
System.out.println("min: " + min);
}
}
Ausgabe:
max: 985
min: 20
Wir können auch Methodenreferenzen für die Berechnung des min- und max-Elements aus einem Array verwenden. Sehen Sie sich den folgenden Code an:
import java.util.Arrays;
public class SimpleTesting {
public static void main(String args[]) {
int[] numbers = {45, 56, 87, 323, 47, 20, 658, 985, 78, 123};
// finding the min element
int min = Arrays.stream(numbers).reduce(Integer.MAX_VALUE, Integer::min);
// finding the max element
int max = Arrays.stream(numbers).reduce(Integer.MIN_VALUE, Integer::max);
// printing the max and min value
System.out.println("max: " + max);
System.out.println("min: " + min);
}
}
Ausgabe:
max: 985
min: 20
Fazit
In diesem Tutorial haben wir etwas über die Reduktionsoperation gelernt. Anschließend tauchten wir tief in das Thema der Operation reduce()
ein. Schließlich haben wir mehrere Beispiele dafür gesehen, wie wir grundlegende arithmetische Funktionen prägnant ausführen.