20. Expressions Lambda en Java

Les expressions Lambda en Java représentent l'une des fonctionnalités les plus importantes introduites dans la version 8 de Java, qui a apporté une nouvelle façon de gérer la programmation fonctionnelle au sein d'un écosystème orienté objet. Ces expressions permettent de créer des instances d'interfaces fonctionnelles (interfaces avec une seule méthode abstraite) de manière concise et lisible, améliorant l'expressivité du code et facilitant la mise en œuvre d'opérations impliquant, par exemple, des collections et des flux de données.

Présentation des expressions Lambda

Une expression lambda peut être comprise comme une fonction anonyme qui n'a pas de nom, mais qui possède une liste de paramètres, un corps, un type de retour et éventuellement une liste d'exceptions pouvant être levées. La syntaxe de base d'une expression lambda est la suivante :

(param1, param2, ...) -> { corps de l'expression }

Par exemple, considérons l'interface fonctionnelle Comparator, qui définit une seule méthode abstraite pour comparer deux objets. Sans lambda, vous implémenteriez une instance de cette interface comme ceci :

Comparateur<String> stringComparator = nouveau Comparateur<String>() { @Passer outre public int comparer (Chaîne s1, Chaîne s2) { return s1.compareTo(s2); } } ;

Avec les expressions lambda, la même chose peut être faite de manière beaucoup plus succincte :

Comparateur<String> stringComparator = (s1, s2) -> s1.compareTo(s2);

Avantages des expressions Lambda

Les expressions Lambda apportent plusieurs avantages au développement Java :

  • Code moins verbeux : réduit la quantité de code nécessaire pour implémenter des interfaces fonctionnelles, ce qui rend le code plus propre et plus facile à lire.
  • Facile avec les collections : facilitez les opérations avec les collections, telles que le filtrage, le mappage et la réduction, via les méthodes de l'API Streams.
  • Parallélisme : permet une manipulation plus efficace des collections en parallèle, en tirant parti de plusieurs cœurs de processeur de manière transparente.
  • Encouragez la programmation fonctionnelle : encouragez un style de programmation fonctionnelle, dans lequel les fonctions peuvent être transmises sous forme d'arguments, renvoyées ou stockées dans des structures de données.

Exemples pratiques d'utilisation de Lambda

Explorons quelques exemples pratiques de la manière dont les expressions lambda peuvent être utilisées en Java :

Filtrer une liste

Supposons que vous ayez une liste de chaînes et que vous souhaitiez filtrer toutes les chaînes commençant par la lettre « J ». Sans lambda, vous feriez quelque chose comme ceci :

Liste<Chaîne> filteredList = new ArrayList<>(); pour (String s : liste) { if (s.startsWith("J")) { filteredList.add(s); } }

Avec lambda et l'API Streams, la même chose peut être faite de manière plus élégante :

Liste<Chaîne> liste filtrée = liste.stream() .filter(s -> s.startsWith("J")) .collect(Collectors.toList());

Appliquer une fonction à tous les éléments d'une liste

Si vous souhaitez appliquer une fonction à tous les éléments d'une liste pour créer une nouvelle liste avec les résultats, vous pouvez le faire comme ceci avec lambda :

Liste<Entier> longueurs = list.stream() .map(String::longueur) .collect(Collectors.toList());

Combiner des éléments d'une liste

Pour combiner des éléments d'une liste en une seule valeur, comme pour additionner tous les nombres d'une liste d'entiers, vous pouvez utiliser la méthode reduce de l'API Streams :

somme int = entiers.stream() .reduce(0, (a, b) -> a + b);

Considérations relatives à l'utilisation de Lambda

Bien que les expressions lambda offrent de nombreux avantages, elles nécessitent également des précautions dans leur utilisation. Il est important de ne pas en abuser, car ils peuvent rendre le code difficile à comprendre s’ils sont utilisés de manière excessive ou inappropriée. De plus, dans certains cas, l'utilisation de méthodes de référence (comme String::length dans l'exemple ci-dessus) peut être encore plus concise et claire qu'une expression lambda.

Un autre point à considérer est la question de la portée. Les expressions Lambda ont accès à la portée dans laquelle elles sont créées, ce qui signifie qu'elles peuvent accéder aux variables locales finales ou effectivement finales (variables qui ne sont pas modifiées après l'initialisation) de la méthode dans laquelle elles sont définies.

Conclusion

Les expressions Lambda en Java sont un outil puissant qui, lorsqu'il est utilisé correctement, peut rendre le code plus clair, plus concis et plus expressif. Ils sont particulièrement utiles lorsque vous travaillez avec des collections et des API bénéficiant d'un style de programmation fonctionnel. En apprenant à utiliser les expressions lambda, vous ajouterez une compétence essentielle à votre répertoire de développeur Java, qui trouvera certainement de nombreuses applications pratiques dans votre quotidien.grammaire.

Répondez maintenant à l’exercice sur le contenu :

Laquelle des affirmations suivantes concernant les expressions lambda en Java est correcte ?

Tu as raison! Félicitations, passez maintenant à la page suivante

Vous avez raté! Essayer à nouveau.

Image de l'article Streams et l'API Stream en Java

Page suivante de lebook gratuit :

116Streams et l'API Stream en Java

0 minutes

Obtenez votre certificat pour ce cours gratuitement ! en téléchargeant lapplication Cursa et en lisant lebook qui sy trouve. Disponible sur Google Play ou App Store !

Get it on Google Play Get it on App Store

+ 6,5 millions
d'étudiants

Certificat gratuit et
valide avec QR Code

48 mille exercices
gratuits

Note de 4,8/5 dans les
magasins d'applications

Cours gratuits en
vidéo, audio et texte