Java 8 : l’ère des expressions Lambda

LambdaJAVA 8 (version SE 8 en Sept 2013, EE 8 en 2015)  arrive avec son lots de nouvelles fonctionnalités et notamment les expressions Lambda susceptibles de révolutionner notre façon de coder mais aussi d'anticiper nos développements. Un bémol néanmoins: JAVA à la sauce Lambda devient un langage ouvert à l'orientation vers les fonctions et moins regardant quant au caractère "fortement typé" qui défini ce langage. Je vous propose de décrypter une partie des fonctionnalités des expressions Lambda afin de vous faire une première idée.

Predicate In Action

Habituellement, la recherche d'éléments dans une liste consiste à écrire une boucle de parcours d'éléments, un test pour savoir si l'élément parcouru est un de ceux que l'on cherche, puis à ajouter cet élément dans la liste de résultats. L'écriture de ce code est redondant, source d'erreurs et peut devenir complexe à lire et à maintenir.

Les prédicats permettent de simplifier l'écriture de méthodes de recherche d'éléments dans une liste.

En effet, l'interface Predicate permet d'externaliser la méthode de sélection des éléments recherchés.

Nous nous concentrons sur l'intention : que les éléments trouvés correspondent bien à ce que nous cherchons.

Ainsi, nous verrons une recherche classique de livres correspondant à certains critères. Ensuite nous verrons comment les bibliothèques common-collections d'Apache et guava de Google nous permettent de simplifier l'écriture de cette recherche à l'aide notamment de l'interface Predicate.

Exemple de recherche

Nous allons prendre comme exemple une bibliothèque qui dispose d'une liste de livre.

Pour chaque livre, nous disposons des informations suivantes : le titre, l'auteur et l'année de publication.

Nous recherchons les livres répondant aux critères suivant :

  • auteur : Rudyard Kipling
  • titre : le titre comporte les mots "jungle" et "grand"

Voyons comment nous pouvons effectuer cette recherche.

Vous connaissez les classes outils de Java (Collection, Comparator, Predicate, Transformer) ? Eh bien, ayez le réflexe Utils!

Pour enrichir et rendre toujours plus génériques et extensibles vos traitements, de nombreuses interfaces/classes outils de Java (Collection, Comparator, Predicate, Transformer...) possèdent une API complémentaire qui se termine en -Utils. Un simple CTRL+SHIFT+T "*Utils" dans mon IDE Eclipse les fait ressortir.
J'y retrouve les classes suivantes, avec un bref aperçu de leurs méthodes.