Java 8 : Les nouveautés

Appliquer les expressions lambda sur un flux

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Les expressions lambda sont indissociables des streams, à la fois pour fournir des critères de recherche et de tri. Elles permettent des expressions de transformation des données.

Transcription

Dans cette vidéo nous allons nous intéresser à voir comment les expressions lambda peuvent être mixées avec les flux dans des opérations de tri par exemple, ou même de filtres. Donc nous allons créer une classe, ou une classe personne, Pour mettre en œuvre ces flux. Donc une personne va se caractériser, comme on avait dit déjà, par un âge et, j'imagine donc le constructeur d'une personne à partir de cet âge, Avec un code assez standard, qui consiste à stocker l'âge de la personne. Et puis donc je vais introduire une relation d'ordre. Ca me servira en fait à introduire le tri sur la personne et je vais faire un flux de personne maintenant. Je vais introduire ma comparaison donc, public, la méthode, un retour catalogue entier. "Compare à" et puis donc je vais avoir la possibilité de comparer this à une autre personne, une personne P, et en gros ce que je vais retourner, c'est la différence entre l'âge et p.age Donc, est-ce que l'âge de ma personne est supérieur à l'âge de la personne que je reçois en paramètre ? Donc maintenant si je reviens sur ma manipulation de flux, je suis capable d'écrire un code du genre donc Stream.of, "New Personne, avec un âge "," New personne avec un âge. New personne avec un âge. A partir de cet ensemble d'objets personne je peux par exemple demander à trier - Sorted-, et là je vais fournir mon opération de comparaison sous la forme d'une lambda expression. Donc sachant que j'ai une personne P1 et une personne P2, alors je sors je vais retourner faire un return avec P1.compare to P2. Je vais trier mes personnes dans mon flux , ici, en utilisant finalement la méthode "compare", non pas" compare to", c'est "compare à", parce que en fait, P1 est compatible avec la méthode compare. Et le résultat de mon tri, alors ici, il me faut finir... Et donc là je termine avec un forEach par exemple, pour l'affichage. Je vais appliquer System.out:: Println donc triés, alors sauf que le Println sur la personne comme vous le savez va sortir quelque chose de pas très clean, donc je vais me proposer ici de venir faire un override du public string to string. Sur personne, afin d'afficher son âge. Chaque personne est représentée par un âge. Donc là ce qui va se passer, c'est construction d'un flux à partir de cette liste d'objets personne, application du tri sous forme d'une lambda expression, et enfin donc forEach pour lequel je pourrai très bien aussi encore une fois faire une lambda expression, en l'occurrence ici, c'est une référence à une méthode qui existe. Voilà donc effectivement je me retrouve bien avec mes différentes personnes triées d'une certaine façon. Une petite remarque concernant les Stream, une petite remarque mais qui n'est pas du tout anodine, c'est que vous êtes tout à fait capables de réutiliser les Stream. En l'occurrence ici je pourrais très bien stocker le flux obtenu par ce sorted sous forme d'un flux. Alors je peux réutiliser le flux S ici, autant de fois que je le veux, tant que je n'ai pas appliqué d'opération terminale. Donc en l'occurrence ici avec ce code là, je vais obtenir le même résultat que précédemment, mais si j'essaie de ré-appliquer le forEach sur ce flux, normalement je vais avoir droit à une exception. La voilà effectivement, donc j'ai IllegalState. En gros le flux est terminé, voilà, "been operated". Le flux est fermé, donc je n'ai pas le droit de ré-appliquer l'opération de flux une deuxième fois. Donc je vais le mettre en commentaire pour que vous puissiez dans les sources conserver la trace de cette erreur. Erreur d'appliquer une deuxième fois une opération terminale. Au niveau des lambda expressions, on voit bien que ça ça pourrait très bien être remplacé effectivement par une lambda expression, en l'occurrence pour chaque élément personne je peux très bien vouloir faire l'affichage de la personne. Pour une personne donnée je peux vouloir donc faire un System.outprintln de personnes plus p.âge par exemple. Là, il manque le point. Donc ici, on est devant expression pour faire presque ce que faisait le println de la personne, mais pas tout à fait puisque effectivement là je veux modifier l'affichage. Donc quand je l'applique, voilà personne 4 personne 34 personne 67. La lambda expression va me permettre comme on le voit ici de modifier le comportement normal, habituel, standard de mon opération. Donc l'usage des lambda expressions va être extrêmement courant dès qu'on va vouloir manipuler des flux, des streams donc, au sens de la classe Stream que l'on va trouver donc dans Java.util.stream. Donc un package spécifique pour contenir tout ce qui est flux au sens application des opérations qui prennent des paramètres. Alors à noter que dans la programmation fonctionnelle, vraisemblablement ces notions de flux pourraient évoquer des choses dont... Donc je ne veux pas donner de nom spécifique à ces notions de flux dans la programmation fonctionnelle, mais là on a l'impression quand même que Java quitte un petit peu le monde de la programmation orientée objet.

Java 8 : Les nouveautés

Découvrez les nouveautés introduites par la version 8 de Java. Voyez les expressions lambda, les références de méthodes, les méthodes par défaut dans les interfaces, etc.

1h44 (21 vidéos)
Aucun commentaire n´est disponible actuellement
Logiciel :
Spécial abonnés
Date de parution :17 août 2015

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !