使用 lambda 表达式谓词从列表中获取特定值

从 Java 8 开始,你可以使用 lambda 表达式和谓词。

示例:使用 lambda 表达式和谓词从列表中获取特定值。在这个例子中,如果他们年龄在 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; }
}

来自 java.util.function.Predicate 包的内置接口 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); 方法采用 lambda 表达式(因为 Predicate 用作参数),你可以在其中定义所需的表达式。检查器的测试方法检查该表达式是否正确:checker.test(person)

你可以轻松地将其更改为其他内容,例如 print(personList, p -> p.getName().startsWith("J"));。这将检查此人的姓名是否以 J 开头。