Looking for java Keywords? Try Ask4Keywords

Java Language Использование лямбда-выражений и предикатов для получения определенного значения (-ов) из списка


пример

Начиная с Java 8, вы можете использовать лямбда-выражения и предикаты.

Пример. Используйте лямбда-выражения и предикат, чтобы получить определенное значение из списка. В этом примере каждый человек будет распечатан с фактом, если ему 18 лет и старше или нет.

Класс личности:

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; }
}

Встроенный интерфейс Predicate из пакета java.util.function.Predicate представляет собой функциональный интерфейс с методом boolean test(T t) .

Пример использования:

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.");
            }
        }
    }
}

print(personList, p -> p.getAge() >= 18); метод принимает лямбда-выражение (потому что в Predicate используется параметр), где вы можете определить требуемое выражение. Метод проверки checker проверяет правильность этого выражения или нет: checker.test(person) .

Вы можете легко изменить это на что-то другое, например, для print(personList, p -> p.getName().startsWith("J")); , Это проверяет, начинается ли имя человека с буквы «J».