以下是使用Joda time API的日期列表,我想从下面的列表中找到最新的日期
List<LocalDate> dates = new ArrayList<LocalDate>();
dates.add(eefdTewntyArray)
dates.add(rdTewntyArray);
dates.add(idSeventyArray);
以上列表的输出
[2025-08-01, 2025-08-01, 2026-08-01]
我想选择最新的日期并存储到LocalDate中,它可能会增加&n;&#39; n&#39;日期数也
答案 0 :(得分:3)
使用此Collections.max
。由于每个LocalTime
实现Comparable
,因此这是安全且直截了当的。
List<LocalDate> dates = new ArrayList<>();
dates.add(new LocalDate(2025, 8, 1));
dates.add(new LocalDate(2025, 8, 1));
dates.add(new LocalDate(2026, 8, 1));
// prints "2006-08-01"
System.out.println(Collections.max(dates));
Collections#max
以线性时间运行,最坏情况下的性能为O(n),而Collections#sort
基于Timsort,其最坏情况运行时为O(n记录n)。如果您的日期列表变得足够大,那么我才会考虑使用排序方法;在这里,它有点矫枉过正。
答案 1 :(得分:0)
使用Collections.sort
对LocalDate
s ...
List<LocalDate> dates = new ArrayList<LocalDate>();
dates.add(new LocalDate(2025, 8, 1));
dates.add(new LocalDate(2024, 8, 1));
dates.add(new LocalDate(2026, 8, 1));
Collections.sort(dates);
System.out.println(dates);
打印
[2024-08-01, 2025-08-01, 2026-08-01]
现在您可以选择最早的(索引0
)或最新的(索引size() - 1
)。您甚至可以reverse
List
更容易
答案 2 :(得分:0)
使用lambdas:
最早的日期:
dates.stream().sorted().findFirst().get()
最新日期:
dates.stream().sorted(Comparator.reverseOrder()).findFirst().get()