任何人都可以共享对LocalDateTime排序并从域对象列表中获取最大和最小记录的逻辑。
域对象
private int employeeNumber;
private LocalDateTime updatedDate;
Run Code Online (Sandbox Code Playgroud)
第一记录
1.1,2016-07-09 00:00:00+0000
2.2,2017-10-06 23:25:37+0000
Run Code Online (Sandbox Code Playgroud)
最大输出:2,2017-10-06 23:25:37 + 0000
最小输出:1,2016-07-09 00:00:00 + 0000
您的简化数据集
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssxx");
dates.add(LocalDateTime.parse("2016-07-09 00:00:00+0000", fmt));
dates.add(LocalDateTime.parse("2017-10-06 23:25:37+0000", fmt));
Run Code Online (Sandbox Code Playgroud)
将哈希集转换为流并从中产生最小值和最大值
System.out.println("Min: " + dates.stream().min(LocalDateTime::compareTo));
System.out.println("Max: " + dates.stream().max(LocalDateTime::compareTo));
Run Code Online (Sandbox Code Playgroud)
输出:
最少:2016-07-09T00:00 最多:2017-10-06T23:25:37
您现在可以轻松地将此核心逻辑适应您的方案。
假设您的域对象名称为“Employee”并且具有List<Employee>域对象列表。然后,您可以通过传递 Comparator 来使用 Java 8 排序功能,如下所示。随后,您可以根据需要提取 Min 和 Max。
employeeList.sort((Employee e1, Employee e2) -> e1.getUpdatedDate().compareTo(e2.getUpdatedDate()));
Run Code Online (Sandbox Code Playgroud)
找到下面的代码示例供您参考。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.List;
public class Main {
static DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssxx");
static Employee emp1 = new Employee(1, LocalDateTime.parse("2017-10-06 23:25:37+0000", format));
static Employee emp2 = new Employee(2, LocalDateTime.parse("2016-07-09 00:00:00+0000", format));
static Employee emp3 = new Employee(3, LocalDateTime.parse("2017-10-06 23:25:38+0000", format));
static Employee emp4 = new Employee(4, LocalDateTime.parse("2016-07-09 00:00:00+0000", format));
static List<Employee> employeeList = Arrays.asList(new Employee[] { emp1, emp2, emp3, emp4 });
public static void main(String[] args) {
employeeList.sort((Employee e1, Employee e2) -> e1.getUpdatedDate().compareTo(e2.getUpdatedDate()));
System.out.println("Max:" + employeeList.get(employeeList.size() - 1));
System.out.println("Min:" + employeeList.get(0));
System.out.println("==== Complete list ===");
employeeList.forEach(e -> System.out.println(e));
}
}
class Employee {
private int employeeNumber;
private LocalDateTime updatedDate;
public Employee() {
}
public Employee(int employeeNumber, LocalDateTime updatedDate) {
this.employeeNumber = employeeNumber;
this.updatedDate = updatedDate;
}
public int getEmployeeNumber() {
return employeeNumber;
}
public void setEmployeeNumber(int employeeNumber) {
this.employeeNumber = employeeNumber;
}
public LocalDateTime getUpdatedDate() {
return updatedDate;
}
public void setUpdatedDate(LocalDateTime updatedDate) {
this.updatedDate = updatedDate;
}
public String toString() {
return String.format("Employee Number: %s, Updated Date: %s", this.employeeNumber, this.updatedDate);
}
}
Run Code Online (Sandbox Code Playgroud)