java 如何排序日期
使用 Collections.sort 和自定义比较器
对 List<Date> 进行排序时,可以通过 Collections.sort 结合自定义的 Comparator 实现:

List<Date> dates = new ArrayList<>();
// 添加日期到列表
Collections.sort(dates, new Comparator<Date>() {
@Override
public int compare(Date d1, Date d2) {
return d1.compareTo(d2); // 升序排列
}
});
使用 Java 8 的 Lambda 表达式
Java 8 及更高版本支持更简洁的写法:

List<Date> dates = new ArrayList<>();
// 添加日期到列表
dates.sort((d1, d2) -> d1.compareTo(d2)); // 升序
// 或使用 Comparator 的默认方法
dates.sort(Comparator.naturalOrder()); // 升序
dates.sort(Comparator.reverseOrder()); // 降序
使用 LocalDate(推荐)
java.time.LocalDate(Java 8+)是更现代的日期处理类,排序方式类似:
List<LocalDate> localDates = new ArrayList<>();
// 添加日期到列表
localDates.sort(Comparator.naturalOrder()); // 升序
localDates.sort(Comparator.reverseOrder()); // 降序
处理字符串格式的日期
若日期为字符串(如 "yyyy-MM-dd"),需先解析为 Date 或 LocalDate 再排序:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
List<LocalDate> parsedDates = dateStrings.stream()
.map(s -> LocalDate.parse(s, formatter))
.sorted()
.collect(Collectors.toList());
注意事项
- 旧版
Date类已过时,推荐使用java.time包下的类(如LocalDate)。 - 线程安全场景下,注意
SimpleDateFormat的非线程安全性,建议用DateTimeFormatter(Java 8+)。






