创建按日期比较对象的自定义比较器

LocalDate()实现了 Comparable 接口,因此它自动支持用于比较两个 LocalDate对象的正确比较逻辑。

我们不需要为此日期比较编写自己的比较逻辑。

我们只需要编写一个自定义的 Comparator来比较自定义对象并比较它们的 LocalDate值。

给定的 Comparator按年龄比较两个给定的 Employee对象,例如:出生日期。

Comparator<Employee> employeeAgeComparator = Comparator
                .comparing(Employee::getDateOfBirth);

使用Comparator.reversed()方法,我们需要从Stream中找到Min Date。

Java 找出流中日期最大的对象
之路 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