2015-09-22 26 views
2

下面是日期的使用乔达时间API列表,我想找到从下面的列表中的最新日期爪哇 - 乔达时间列表<LocalDate>找到最新日期

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的,它可能会增加也日

+4

使用'Collections.sort' – MadProgrammer

+0

看看这个帖子HTTP ://stackoverflow.com/questions/14877031/get-the-most-current-latest-date-object-in-list – KostasC

+0

@MadProgrammer - 它会在没有传递自定义比较器的情况下工作吗? – TheLostMind

回答

0

使用Collections.sort的“N”数字排序的名单小号...

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)。你甚至可以reverseList它更容易

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 log n)的。如果您的日期列表变得足够大,那么只有那时我才会考虑使用排序方法;在这里,这有点矫枉过正。

0

随着lambda表达式:

对于最早日期:

dates.stream().sorted().findFirst().get() 

有关最新的日期:

dates.stream().sorted(Comparator.reverseOrder()).findFirst().get()