Accueil Finances personnelles En utilisant Streams et Lambda Expressions en Java - dummies

En utilisant Streams et Lambda Expressions en Java - dummies

Vidéo: Java 8 Streams Tutorial 2025

Vidéo: Java 8 Streams Tutorial 2025
Anonim

Java a des méthodes sophistiquées qui optimisent l'utilisation des flux et des expressions lambda. Avec les flux et les expressions lambda, vous pouvez créer une ligne d'assemblage. La solution de ligne d'assemblage utilise des concepts issus de la programmation fonctionnelle.

La chaîne de montage est composée de plusieurs méthodes. Chaque méthode prend les données, transforme les données d'une manière ou d'une autre et remet ses résultats à la méthode suivante en ligne. Voici une chaîne de montage.

Une ligne d'assemblage de programmation fonctionnelle.

Chaque boîte représente un tas de matières premières transformées le long d'une ligne d'assemblage. Chaque flèche représente une méthode (ou, métaphoriquement, un travailleur sur la chaîne de montage).

Par exemple, lors du passage de la deuxième case à la troisième, une méthode worker (la méthode filter ) filtre les ventes d'éléments qui ne sont pas des DVD. Imaginez Lucy Ricardo debout entre les deuxième et troisième boîtes, retirant chaque livre ou CD de la chaîne de montage et le jetant négligemment sur le sol.

Le paramètre de la méthode filter de Java est Predicate - une expression lambda dont le résultat est boolean . La méthode filter filtre les éléments qui ne réussissent pas le test true / false de l'expression lambda.

Méthodes de programmation fonctionnelle
Nom de la méthode Membre de Paramètre (s) Type de résultat Valeur de résultat
flux Collection (par exemple, ArrayList , objet) (aucun) Flux Un flux qui recrache des éléments de la collection
filtre Flux Prédicat Flux > Un nouveau flux contenant des valeurs pour lesquelles l'expression lambda renvoie true map
Stream Function Stream Un nouveau flux contenant les résultats de l'application de l'expression lambda au flux entrant réduire
Flux BinaryOperator Le type utilisé par le BinaryOperator Le résultat de la combinaison de toutes les valeurs dans le flux entrant
Lors du passage de la troisième boîte à la quatrième, une méthode de travail (méthode

map ) extrait le prix de chaque vente . À partir de cet endroit, la ligne d'assemblage ne contient que prix . Pour être plus précis, la méthode Java

map prend une Fonction telle que (sale) -> sale. getPrice ()

et applique la

Function à chaque valeur d'un flux. Ainsi, la méthode map prend un flux entrant d'objets sale et crée un flux sortant de valeurs price . Lors du passage de la quatrième case à la cinquième case, une méthode de travail (méthode

réduire ) ajoute le prix des ventes de DVD.La méthode Java reduce prend deux paramètres: Le premier paramètre est une valeur initiale.

Dans l'image ci-dessus, la valeur initiale est

0. 0 . Le second paramètre est un

. Dans l'image ci-dessus, réduire la méthode BinaryOperator est (prix1, prix2) -> prix1 + prix2

La méthode

réduire utilise son BinaryOperator pour combiner les valeurs du flux entrant. La valeur initiale sert de point de départ pour toute la combinaison. Donc, la méthode réduire fait deux ajouts. La méthode reduce ajoute deux valeurs à un flux entrant.

Pour comparer, imaginez que l'appel de la méthode

réduise (10.0, (value1, value2) -> value1 * value2)

avec le flux dont les valeurs incluent

3. 0 , 2. 0 et 5. 0 . L'action résultante est indiquée ci-dessous La méthode réduire multiplie les valeurs d'un flux entrant.

Vous avez peut-être entendu parler du modèle de programmation MapReduce de Google. La similarité entre le nom du modèle de programmation et les noms de méthodes Java map et reduce n'est pas une coïncidence. Pris dans leur ensemble, l'ensemble de l'assemblage augmente les prix des DVD vendus. Le code ci-dessus contient un programme complet utilisant les flux et les expressions lambda de la première image ci-dessus.

importer java. texte. Format de nombre;

importer java. util. ArrayList;

public class TallySales {

public static void principal (String [] args) {

ArrayList

sales = new ArrayList <> (); Devise NumberFormat = NombreFormat. getCurrencyInstance ();

fillTheList (ventes);

double total = ventes. stream ()

. filter ((vente) -> sale. getItem (). est égal à ("DVD"))

. map ((vente) -> vente. getPrice ())

. réduire (0.0, (prix1, prix2) -> prix1 + prix2);

Système. en dehors. println (devise, format (total));

}

static void fillTheList (ArrayList

ventes) { ventes. ajouter (nouvelle vente ("DVD", 15. 00));

ventes. ajouter (nouvelle vente ("Livre", 12. 00));

ventes. ajouter (nouvelle vente ("DVD", 21. 00));

ventes. ajouter (nouvelle vente ("CD", 5. 25));

}

}

Le code requiert Java 8 ou une version ultérieure. Si votre IDE est configuré pour une version antérieure de Java, vous devrez peut-être bricoler les paramètres de l'EDI. Vous devrez peut-être même télécharger une version plus récente de Java.

La lettre en gras est une grande déclaration d'affectation Java. Le côté droit de l'instruction contient une séquence d'appels de méthode. Chaque appel de méthode renvoie un objet, et chacun de ces objets est la chose avant le point dans l'appel de méthode suivant. C'est comme ça que vous formez la chaîne de montage.

Par exemple, près du début du code en gras, le nom

ventes fait référence à un objet ArrayList . Chaque objet ArrayList possède une méthode stream . Dans le code ci-dessus, ventes. stream () est un appel à la méthode ArrayList de l'objet stream . La méthode stream renvoie une instance de la classe Java

Stream . (Quelle surprise!) Donc ventes. stream () fait référence à un objet Stream . Obtenir toutes les ventes de DVD.

Tout objet

Flux possède une méthode filtre . Donc ventes. courant(). filter⁣ ((vente) -> vente. getItem (). equals ("DVD"))

est un appel à la méthode

objectStream de l'objet filter . Le motif continue. La méthode

map de l'objet Stream renvoie encore un autre objet Stream - un objet Stream contenant des prix.

Obtenir le prix de chaque vente de DVD.

Pour ce flux de prix, appliquez la méthode réduire , qui donne une valeur double , soit le total des prix des DVD.

Obtenir le prix total de toutes les ventes de DVD.

En utilisant Streams et Lambda Expressions en Java - dummies

Le choix des éditeurs

Principes de base du protocole de routage IP Multicast - dummies

Principes de base du protocole de routage IP Multicast - dummies

IP Le routage multicast est le routage du trafic multicast. La nature des données IP Multicast est telle qu'elle a ses propres problèmes de routage de réseau Cisco. Il existe quatre protocoles de multidiffusion principaux pris en charge par le Cisco IOS actuel. L'illustration vous montre approximativement où les protocoles sont utilisés; Ce qui suit est ...

Comment le protocole STP (Spanning Tree Protocol) gère les modifications du réseau - dummies

Comment le protocole STP (Spanning Tree Protocol) gère les modifications du réseau - dummies

Nouveau concentrateur ou passer à un réseau mappé STP (Spanning Tree Protocol)? Pour cet exemple, un concentrateur était connecté à un port sur les deux commutateurs 11: 99 et 77: 22. Un concentrateur était utilisé car il ne disposait pas d'une intelligence réseau. L'effet net est en fait le même que ...

Types de réseau local (LAN) - nuls

Types de réseau local (LAN) - nuls

Un WAN est un type de réseau local (LAN) . Un réseau local est un réseau privé généralement constitué d'une connexion réseau fiable, rapide et bien connectée. Les alternatives sur le framework LAN incluent CAN, MAN et WAN. Ces trois options de réseau sont illustrées ci-dessous: CAN Si vous utilisez le réseau LAN ...

Le choix des éditeurs

Bebo est l'application de médias sociaux pour vous? - les nuls

Bebo est l'application de médias sociaux pour vous? - les nuls

Comment savez-vous quel est le bon média social pour vous? La culture moderne devient de plus en plus dépendante des médias sociaux tels que Bebo, Facebook, Twitter et What'sApp, ainsi que de nombreux autres. Le questionnaire suivant vous aidera à déterminer si vous avez ou non ce qu'il faut pour être social sur le nouveau ...

Comment utiliser Bebo - dummies

Comment utiliser Bebo - dummies

Bebo, la nouvelle application des médias sociaux, est aussi facile à utiliser que C'est amusant à regarder. Vous pouvez obtenir cette nouvelle application sur Google Play Store et Apple App Store. Lancez Bebo et suivez les instructions à l'écran pour terminer le processus de création de compte. Après avoir téléchargé avec succès, ...

Le choix des éditeurs

Ce que vous pouvez trouver dans une barre latérale de blog - des mannequins

Ce que vous pouvez trouver dans une barre latérale de blog - des mannequins

La plupart des blogs contiennent du matériel de barre latérale. La plupart des blogs sont disposés en deux ou trois colonnes, et le contenu de la barre latérale apparaît généralement dans les deuxième et / ou troisième colonnes. Certains blogs n'ont pas de barres latérales, et sur d'autres blogs, vous pouvez découvrir des éléments supplémentaires au-delà de ce que vous voyez ici. Archives basées sur la date: Presque tous les blogs sont ...

Lorsqu'un réseau publicitaire est approprié pour votre blog maman - les mannequins

Lorsqu'un réseau publicitaire est approprié pour votre blog maman - les mannequins

Ne sont que quelques-unes modèles conflit en cours d'exécution des publicités avec vos meilleurs intérêts. C'est quand vous bloguez pour vendre vos propres produits ou pour promouvoir vos services professionnels. Même dans ce cas, il est toujours possible de diffuser des annonces sur ces blogs, surtout si les annonces font la promotion de produits et de services complémentaires et non concurrents. Mais si vous êtes ...

Quand maman blogue pour Swag is Okay - les mannequins

Quand maman blogue pour Swag is Okay - les mannequins

Dans certaines circonstances légitimes vous pouvez vous sentir travailler gratuitement vaut votre temps et la publicité que vous offrez à une marque. Cela peut être comparé à un stage non rémunéré. Si vous êtes stagiaire et que vous avez une excellente expérience de travail, alors c'est une entreprise précieuse. Si vous êtes stagiaire et que vous ne versez que du café et que vous livrez ...