Java 8 根据元素属性谓词 select 列表中的元素
Java 8 Predicate to select an element from list based on element properties
有一个员工对象列表,每个员工对象都有 属性 开始日期。
任务是 select 只有一名有最早开始日期的员工。
我正在尝试为此使用 Java 8 谓词。
那么基本上我如何在 predicate 中比较列表元素?
我如何使用带有功能接口的 lambda 做同样的事情?
Java Predicates 是基于 Predicate 的数学概念,Predicate 是一个函数 F(x) returns true 或 false 基于 x 的某些属性。鉴于在遍历集合时无法重新定义该函数,它可能不是查找某个集合的最小值或最大值的首选选项。
使用 Java 8 的推荐方法是使用 Java Streams 中包含的 min
函数。
Employee oldestEmployee = employees.stream().min(Comparator.comparing(Employee::getStartDate)).get()
假设你有员工:
class Employee {
private LocalDate startDate;
}
构造函数和getter被省略。您可以找到最早开始日期的员工如下:
Optional<Employee> min = list.stream()
.min(Comparator.comparing(Employee::getStartDate));
有一个员工对象列表,每个员工对象都有 属性 开始日期。 任务是 select 只有一名有最早开始日期的员工。 我正在尝试为此使用 Java 8 谓词。 那么基本上我如何在 predicate 中比较列表元素? 我如何使用带有功能接口的 lambda 做同样的事情?
Java Predicates 是基于 Predicate 的数学概念,Predicate 是一个函数 F(x) returns true 或 false 基于 x 的某些属性。鉴于在遍历集合时无法重新定义该函数,它可能不是查找某个集合的最小值或最大值的首选选项。
使用 Java 8 的推荐方法是使用 Java Streams 中包含的 min
函数。
Employee oldestEmployee = employees.stream().min(Comparator.comparing(Employee::getStartDate)).get()
假设你有员工:
class Employee {
private LocalDate startDate;
}
构造函数和getter被省略。您可以找到最早开始日期的员工如下:
Optional<Employee> min = list.stream()
.min(Comparator.comparing(Employee::getStartDate));