El método reduce() es una función de orden superior que toma todos los elementos de una colección (Array, List, etc.) y los combina mediante una operación binaria para producir un valor único. Es necesario asegurarse de que las operaciones sean conmutativas y asociativas. Las funciones anónimas se pasan como parámetro a la función reduce.
Sintaxis :
val l = List(2, 5, 3, 6, 4, 7) // returns the largest number from the collection l.reduce((x, y) => x max y)
El orden en que se seleccionan los números para operar con el método de reducción es aleatorio. Esta es la razón por la que no se prefieren las operaciones no conmutativas y no asociativas.
Ejemplo :
scala
// Scala program to // print maximum value // using reduce() // Creating object object GfG { // Main method def main(args:Array[String]) { // source collection val collection = List(1, 3, 2, 5, 4, 7, 6) // finding the maximum valued element val res = collection.reduce((x, y) => x max y) println(res) } }
Producción :
7
En el programa anterior, el método de reducción selecciona pares aleatorios y descubre el valor máximo en un par en particular. Estos valores se comparan de nuevo entre sí hasta que se obtiene un único elemento de valor máximo. Por lo general, usamos el método reduce() junto con el método map() cuando trabajamos con conjuntos de datos distribuidos resistentes en Spark. El método map() nos ayuda a transformar una colección en otra colección mientras que el método reduce() nos permite realizar alguna acción.
Encontrar el promedio usando map() y reduce():
Ejemplo:
scala
// Scala program to // print average // using map() and reduce() //Creating object object GfG { // Main method def main(args:Array[String]) { // source collection val collection = List(1, 5, 7, 8) // converting every element to a pair of the form (x,1) // 1 is initial frequency of all elements val new_collection = collection.map(x => (x,1)) /* List((1, 1), (5, 1), (7, 1), (8, 1)) */ // adding elements at corresponding positions val res = new_collection.reduce( (a,b) => ( a._1 + b._1, a._2 + b._2 ) ) /* (21, 4) */ println(res) println("Average="+ res._1/res._2.toFloat) } }
Salida :
(21, 4) Average= 5.25
En el programa anterior, todos los elementos de la colección se transforman en tuplas con dos elementos. El primer elemento de la tupla es el propio número y el segundo elemento es el contador. Inicialmente, todos los contadores se establecen en 1. La salida en sí es una tupla con dos elementos: el primer valor es la suma y el segundo valor es el número de elementos.
Nota : el tipo de salida proporcionado por el método reduce() es el mismo que el tipo de elementos de la colección.
Publicación traducida automáticamente
Artículo escrito por MohammadKhalid y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA