Merge pull request #12999 from thibaultfaure/BAEL-5925-finding-max-date-in-object-list
BAEL-5925 Code for the finding max date in object list article
This commit is contained in:
		
						commit
						28f86cb991
					
				| @ -0,0 +1,50 @@ | ||||
| package com.baeldung.streams.maxdate; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| import java.util.Comparator; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class DateHelper { | ||||
| 
 | ||||
|     static final Date findMaxDateOf(List<Event> events) { | ||||
|         if (events == null || events.isEmpty()) { | ||||
|             return null; | ||||
|         } | ||||
|         return events.stream() | ||||
|             .map(Event::getDate) | ||||
|             .max(Date::compareTo) | ||||
|             .get(); | ||||
|     } | ||||
| 
 | ||||
|     static final Date findMaxDateOfWithComparator(List<Event> events) { | ||||
|         if (events == null || events.isEmpty()) { | ||||
|             return null; | ||||
|         } | ||||
|         return events.stream() | ||||
|             .map(Event::getDate) | ||||
|             .max(Comparator.naturalOrder()) | ||||
|             .get(); | ||||
|     } | ||||
| 
 | ||||
|     static final LocalDate findMaxDateOfLocalEvents(List<LocalEvent> events) { | ||||
|         if (events == null || events.isEmpty()) { | ||||
|             return null; | ||||
|         } | ||||
|         return events.stream() | ||||
|             .map(LocalEvent::getDate) | ||||
|             .max(LocalDate::compareTo) | ||||
|             .get(); | ||||
|     } | ||||
| 
 | ||||
|     static final LocalDate findMaxDateOfLocalEventsWithComparator(List<LocalEvent> events) { | ||||
|         if (events == null || events.isEmpty()) { | ||||
|             return null; | ||||
|         } | ||||
|         return events.stream() | ||||
|             .map(LocalEvent::getDate) | ||||
|             .max(Comparator.naturalOrder()) | ||||
|             .get(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,17 @@ | ||||
| package com.baeldung.streams.maxdate; | ||||
| 
 | ||||
| import java.util.Date; | ||||
| 
 | ||||
| public class Event { | ||||
| 
 | ||||
|     Date date; | ||||
| 
 | ||||
|     public Event(Date date) { | ||||
|         this.date = date; | ||||
|     } | ||||
| 
 | ||||
|     public Date getDate() { | ||||
|         return date; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,16 @@ | ||||
| package com.baeldung.streams.maxdate; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| 
 | ||||
| public class LocalEvent { | ||||
| 
 | ||||
|     LocalDate date; | ||||
| 
 | ||||
|     public LocalEvent(LocalDate date) { | ||||
|         this.date = date; | ||||
|     } | ||||
| 
 | ||||
|     public LocalDate getDate() { | ||||
|         return date; | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,109 @@ | ||||
| package com.baeldung.streams.maxdate; | ||||
| 
 | ||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | ||||
| import static org.junit.jupiter.api.Assertions.assertNull; | ||||
| 
 | ||||
| import java.time.LocalDate; | ||||
| import java.util.Date; | ||||
| import java.util.List; | ||||
| 
 | ||||
| import org.apache.commons.lang3.time.DateUtils; | ||||
| import org.junit.jupiter.api.Test; | ||||
| 
 | ||||
| class DateHelperUnitTest { | ||||
| 
 | ||||
|     Date TODAY = new Date(); | ||||
|     Event TODAYS_EVENT = new Event(TODAY); | ||||
|     Date TOMORROW = DateUtils.addDays(TODAY, 1); | ||||
|     Event TOMORROWS_EVENT = new Event(TOMORROW); | ||||
|     Date NEXT_WEEK = DateUtils.addDays(TODAY, 7); | ||||
|     Event NEXT_WEEK_EVENT = new Event(NEXT_WEEK); | ||||
| 
 | ||||
|     LocalDate TODAY_LOCAL = LocalDate.now(); | ||||
|     LocalEvent TODAY_LOCAL_EVENT = new LocalEvent(TODAY_LOCAL); | ||||
|     LocalDate TOMORROW_LOCAL = TODAY_LOCAL.plusDays(1); | ||||
|     LocalEvent TOMORROW_LOCAL_EVENT = new LocalEvent(TOMORROW_LOCAL); | ||||
|     LocalDate NEXT_WEEK_LOCAL = TODAY_LOCAL.plusWeeks(1); | ||||
|     LocalEvent NEXT_WEEK_LOCAL_EVENT = new LocalEvent(NEXT_WEEK_LOCAL); | ||||
| 
 | ||||
|     @Test | ||||
|     void givenNullEventList_WhenFindMaxDateOf_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOf(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenEmptyEventList_WhenFindMaxDateOf_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOf(List.of())); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenSingleElementEventList_WhenFindMaxDateOf_ThenReturnElementDate() { | ||||
|         assertEquals(TODAY, DateHelper.findMaxDateOf(List.of(TODAYS_EVENT))); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenEventList_WhenFindMaxDateOf_ThenReturnMaxDate() { | ||||
|         assertEquals(NEXT_WEEK, DateHelper.findMaxDateOf(List.of(TODAYS_EVENT, TOMORROWS_EVENT, NEXT_WEEK_EVENT))); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenNullEventList_WhenFindMaxDateOfWithComparator_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOfWithComparator(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenEmptyEventList_WhenFindMaxDateOfWithComparator_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOfWithComparator(List.of())); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenSingleElementEventList_WhenFindMaxDateOfWithComparator_ThenReturnElementDate() { | ||||
|         assertEquals(TODAY, DateHelper.findMaxDateOfWithComparator(List.of(TODAYS_EVENT))); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenEventList_WhenFindMaxDateOfWithComparator_ThenReturnMaxDate() { | ||||
|         assertEquals(NEXT_WEEK, DateHelper.findMaxDateOfWithComparator(List.of(TODAYS_EVENT, TOMORROWS_EVENT, NEXT_WEEK_EVENT))); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenNullLocalEventList_WhenFindMaxDateOfLocalEvents_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOfLocalEvents(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenEmptyLocalEventList_WhenFindMaxDateOfLocalEvents_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOfLocalEvents(List.of())); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenSingleElementLocalEventList_WhenFindMaxDateOfLocalEvents_ThenReturnElementDate() { | ||||
|         assertEquals(TODAY_LOCAL, DateHelper.findMaxDateOfLocalEvents(List.of(TODAY_LOCAL_EVENT))); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenLocalEventList_WhenFindMaxDateOfLocalEvents_ThenReturnMaxDate() { | ||||
|         assertEquals(NEXT_WEEK_LOCAL, DateHelper.findMaxDateOfLocalEvents(List.of(TODAY_LOCAL_EVENT, TOMORROW_LOCAL_EVENT, NEXT_WEEK_LOCAL_EVENT))); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenNullLocalEventList_WhenFindMaxDateOfLocalEventsWithComparator_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOfLocalEventsWithComparator(null)); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenEmptyLocalEventList_WhenFindMaxDateOfLocalEventsWithComparator_ThenNull() { | ||||
|         assertNull(DateHelper.findMaxDateOfLocalEventsWithComparator(List.of())); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenSingleElementLocalEventList_WhenFindMaxDateOfLocalEventsWithComparator_ThenReturnElementDate() { | ||||
|         assertEquals(TODAY_LOCAL, DateHelper.findMaxDateOfLocalEventsWithComparator(List.of(TODAY_LOCAL_EVENT))); | ||||
|     } | ||||
| 
 | ||||
|     @Test | ||||
|     void givenLocalEventList_WhenFindMaxDateOfLocalEventsWithComparator_ThenReturnMaxDate() { | ||||
|         assertEquals(NEXT_WEEK_LOCAL, DateHelper.findMaxDateOfLocalEventsWithComparator(List.of(TODAY_LOCAL_EVENT, TOMORROW_LOCAL_EVENT, NEXT_WEEK_LOCAL_EVENT))); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user