有一个List Employee对象,每个雇员对象都有属性开始日期。 任务是仅选择一个具有最早开始日期的员工。 我正在尝试使用Java 8 Predicate。 那么基本上如何在谓词中将列表元素相互比较呢? 如何使用带有Functional接口的lambda来做同样的事情?
答案 0 :(得分:1)
Java Predicates基于谓词的数学概念,谓词是一个函数F(x),它根据x的某些属性返回true或false。鉴于在遍历集合时无法重新定义函数,它可能不是查找某些集合的最小值或最大值的可行选项。
使用Java 8建议的方法是使用Java Streams中包含的min
函数。
Employee oldestEmployee = employees.stream().min(Comparator.comparing(Employee::getStartDate)).get()
答案 1 :(得分:1)
假设您有员工:
class Employee {
private LocalDate startDate;
}
省略了构造函数和getter。您可以按如下方式找到具有最早startDate的员工:
Optional<Employee> min = list.stream()
.min(Comparator.comparing(Employee::getStartDate));