Scala | fonction réduire () – GeeksforGeeks

Afficher la discussion

Améliorer l’article

Enregistrer l’article

J’aime l’article

Afficher la discussion

Améliorer l’article

Enregistrer l’article

J’aime l’article

La réduire() est une fonction d’ordre supérieur qui prend tous les éléments d’une collection (Array, List, etc.) et les combine à l’aide d’un opération binaire produire une valeur unique. Il faut s’assurer que les opérations sont commutatives et associatives. Fonctions anonymes sont passés en paramètre à la fonction reduce.
Syntaxe:

val l = List(2, 5, 3, 6, 4, 7)
// returns the largest number from the collection
l.reduce((x, y) => x max y)

L’ordre dans lequel les numéros sont sélectionnés pour l’opération par le réduire méthode est aléatoire. C’est la raison pour laquelle les opérations non commutatives et non associatives ne sont pas préférées.
Exemple :

échelle

object GfG

{

    

def main(args:Array[String])

{

    

    val collection = List(1, 3, 2, 5, 4, 7, 6)

    

    val res = collection.reduce((x, y) => x max y)

    println(res)

}

}

Production :

7

Dans le programme ci-dessus, la méthode de réduction sélectionne des paires aléatoires et trouve la valeur maximale dans une paire particulière. Ces valeurs sont à nouveau comparées les unes aux autres jusqu’à ce qu’un seul élément de valeur maximale soit obtenu. Nous utilisons généralement la méthode reduce() avec la méthode carte() tout en travaillant avec des ensembles de données distribués résilients dans Spark. La méthode map() nous aide à transformer une collection en une autre collection tandis que la méthode reduce() nous permet d’effectuer certaines actions.
Trouver la moyenne en utilisant map() et reduce() :
Exemple :

échelle

object GfG

{

    

def main(args:Array[String])

{

    

    val collection = List(1, 5, 7, 8)

    

    

    val new_collection = collection.map(x => (x,1))

    

    

    

    

    val res = new_collection.reduce( (a,b) => ( a._1 + b._1,

                                            a._2 + b._2 ) )

    

    

    

    println(res)

    println("Average="+ res._1/res._2.toFloat)

}

}

Production:

(21, 4)
Average= 5.25

Dans le programme ci-dessus, tous les éléments de la collection sont transformés en tuples avec deux éléments. Le premier élément du tuple est le nombre lui-même et le deuxième élément est le compteur. Initialement, tous les compteurs sont mis à 1. La sortie elle-même est un tuple avec deux éléments : la première valeur est la somme et la seconde valeur est le nombre d’éléments.
Noter: Le type de sortie donné par la méthode reduce() est le même que le type des éléments de la collection.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *