Java - Joda时间列表<localdate>查找最新日期

时间:2015-09-22 05:28:05

标签: java jodatime

以下是使用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;日期数也

3 个答案:

答案 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.sortLocalDate 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()