Java Language Utilisation d'expressions lambda et de prédicats pour obtenir une ou plusieurs valeurs dans une liste


Exemple

À partir de Java 8, vous pouvez utiliser des expressions et des prédicats lambda.

Exemple: Utilisez des expressions lambda et un prédicat pour obtenir une certaine valeur dans une liste. Dans cet exemple, chaque personne sera imprimée avec le fait qu'elle ait 18 ans ou plus.

Classe de personne:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public int getAge() { return age; }
    public String getName() { return name; }
}

L'interface intégrée Predicate des packages java.util.function.Predicate est une interface fonctionnelle avec une méthode de boolean test(T t) .

Exemple d'utilisation:

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

public class LambdaExample {
    public static void main(String[] args) {
        List<Person> personList = new ArrayList<Person>();
        personList.add(new Person("Jeroen", 20));
        personList.add(new Person("Jack", 5));
        personList.add(new Person("Lisa", 19));

        print(personList, p -> p.getAge() >= 18);
    }

    private static void print(List<Person> personList, Predicate<Person> checker) {
        for (Person person : personList) {
            if (checker.test(person)) {
                System.out.print(person + " matches your expression.");
            } else {
                System.out.println(person  + " doesn't match your expression.");
            }
        }
    }
}

Le print(personList, p -> p.getAge() >= 18); méthode prend une expression lambda (parce que le prédicat est utilisé un paramètre) où vous pouvez définir l'expression nécessaire. La méthode de test du vérificateur vérifie si cette expression est correcte ou non: checker.test(person) .

Vous pouvez facilement changer cela pour quelque chose d'autre, par exemple pour print(personList, p -> p.getName().startsWith("J")); . Cela vérifiera si le nom de la personne commence par un "J".