创建按日期比较对象的自定义比较器
LocalDate()
实现了 Comparable 接口,因此它自动支持用于比较两个 LocalDate
对象的正确比较逻辑。
我们不需要为此日期比较编写自己的比较逻辑。
我们只需要编写一个自定义的 Comparator
来比较自定义对象并比较它们的 LocalDate
值。
给定的 Comparator
按年龄比较两个给定的 Employee
对象,例如:出生日期。
Comparator<Employee> employeeAgeComparator = Comparator .comparing(Employee::getDateOfBirth);
使用Comparator.reversed()
方法,我们需要从Stream中找到Min Date。
之路 on it Road.com
Java 从流中获取具有最大日期的对象
下面的示例创建一个 Employee
对象流,然后将自定义的 Comparator
传递给 Stream.max()
方法,找出流中日期最大的对象。
import java.time.LocalDate; import java.util.ArrayList; import java.util.Comparator; import java.util.List; public class MaxDateExample { public static void main(final String[] args) { Comparator<Employee> employeeAgeComparator = Comparator .comparing(Employee::getDateOfBirth); Employee youngestEmployee = getEmployeeList().stream() .max(employeeAgeComparator) .get(); System.out.println(youngestEmployee); //Prints Employee 'D' } private static List<Employee> getEmployeeList() { List<Employee> empList = new ArrayList<>(); empList.add(new Employee(1, "A", LocalDate.of(1991, 1, 1), 30000)); empList.add(new Employee(2, "B", LocalDate.of(1976, 7, 9), 30000)); empList.add(new Employee(3, "C", LocalDate.of(1992, 8, 1), 50000)); empList.add(new Employee(4, "D", LocalDate.of(2001, 3, 11), 50000)); return empList; } }
日期:2020-09-17 00:10:07 来源:oir作者:oir