2015-09-22 2 views
2

Ниже приведен список дат с помощью Joda времени API, я хочу, чтобы найти самую последнюю дату из списка нижеJava - Joda Список времени <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, он может увеличить «N» число даты также

+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 для сортировки списка 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). Вы можете даже 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 журнал N). Если ваш список дат становится достаточно большим, тогда и только тогда я буду использовать метод сортировки; здесь, это немного перебор.

0

С лямбды:

Для старой датой:

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

За последнюю дату:

dates.stream().sorted(Comparator.reverseOrder()).findFirst().get() 
Смежные вопросы