Muchas veces, necesitamos realizar operaciones en las que un flujo se reduce a un solo valor resultante, por ejemplo, máximo, mínimo, suma, producto, etc. Reducir es el proceso repetido de combinar todos los elementos.
La operación de reducción aplica un operador binario a cada elemento del flujo, donde el primer argumento del operador es el valor de retorno de la aplicación anterior y el segundo argumento es el elemento del flujo actual.
Sintaxis:
T reduce(T identity, BinaryOperator<T> accumulator); Where, identity is initial value of type T and accumulator is a function for combining two values.
sum(), min(), max(), count() etc. son algunos ejemplos de operaciones de reducción. reduce() le pide explícitamente que especifique cómo reducir los datos que pasaron por la transmisión.
Veamos algunos ejemplos para entender mejor la función reduce():
Ejemplo 1:
// Implementation of reduce method // to get the longest String import java.util.*; class GFG { // Driver code public static void main(String[] args) { // creating a list of Strings List<String> words = Arrays.asList("GFG", "Geeks", "for", "GeeksQuiz", "GeeksforGeeks"); // The lambda expression passed to // reduce() method takes two Strings // and returns the longer String. // The result of the reduce() method is // an Optional because the list on which // reduce() is called may be empty. Optional<String> longestString = words.stream() .reduce((word1, word2) -> word1.length() > word2.length() ? word1 : word2); // Displaying the longest String longestString.ifPresent(System.out::println); } }
Producción :
GeeksforGeeks
Ejemplo 2:
// Implementation of reduce method // to get the combined String import java.util.*; class GFG { // Driver code public static void main(String[] args) { // String array String[] array = { "Geeks", "for", "Geeks" }; // The result of the reduce() method is // an Optional because the list on which // reduce() is called may be empty. Optional<String> String_combine = Arrays.stream(array) .reduce((str1, str2) -> str1 + "-" + str2); // Displaying the combined String if (String_combine.isPresent()) { System.out.println(String_combine.get()); } } }
Producción :
Geeks-for-Geeks
Ejemplo 3:
// Implementation of reduce method // to get the sum of all elements import java.util.*; class GFG { // Driver code public static void main(String[] args) { // Creating list of integers List<Integer> array = Arrays.asList(-2, 0, 4, 6, 8); // Finding sum of all elements int sum = array.stream().reduce(0, (element1, element2) -> element1 + element2); // Displaying sum of all elements System.out.println("The sum of all elements is " + sum); } }
Producción :
The sum of all elements is 16
Ejemplo 4:
// Implementation of reduce method // to get the product of all numbers // in given range. import java.util.*; import java.util.stream.IntStream; class GFG { // Driver code public static void main(String[] args) { // To get the product of all elements // in given range excluding the // rightmost element int product = IntStream.range(2, 8) .reduce((num1, num2) -> num1 * num2) .orElse(-1); // Displaying the product System.out.println("The product is : " + product); } }
Producción :
The product is : 5040
Publicación traducida automáticamente
Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA