使用 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
开头。