fork download
  1. import java.time.LocalDate;
  2. import java.time.format.DateTimeFormatter;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Locale;
  6. import java.util.Objects;
  7. import java.util.stream.Collectors;
  8. import java.util.stream.Stream;
  9.  
  10. public class Main {
  11. public static void main(String[] args) {
  12. List<LocalDate> list = Arrays.asList(
  13. LocalDate.of(2021, 8, 1),
  14. LocalDate.of(2021, 8, 2),
  15. LocalDate.of(2021, 8, 3),
  16. LocalDate.of(2021, 8, 8),
  17. LocalDate.of(2021, 8, 9),
  18. LocalDate.of(2021, 8, 10),
  19. LocalDate.of(2021, 8, 11),
  20. LocalDate.of(2021, 8, 12),
  21. LocalDate.of(2021, 8, 13),
  22. LocalDate.of(2021, 8, 14),
  23. LocalDate.of(2021, 8, 15),
  24. null
  25. );
  26.  
  27. LocalDate today = LocalDate.now();
  28. LocalDate thirdDay = today.plusDays(2);
  29.  
  30. List<LocalDate> result =
  31. Stream.concat(
  32. list.stream()
  33. .filter(Objects::nonNull)
  34. .filter(date -> !date.isBefore(today) && !date.isAfter(thirdDay)),
  35. Stream.concat(
  36. Stream.of(today),
  37. list.stream()
  38. .filter(Objects::nonNull)
  39. .filter(date ->
  40. date.isBefore(today) || date.isAfter(thirdDay)
  41. ).sorted()
  42. )
  43. ).collect(Collectors.toList());
  44.  
  45. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("d-MMM-uuuu", Locale.ENGLISH);
  46.  
  47. result.forEach(e -> System.out.println(e.format(dtf)));
  48. }
  49. }
Success #stdin #stdout 0.12s 52880KB
stdin
Standard input is empty
stdout
8-Aug-2021
9-Aug-2021
10-Aug-2021
8-Aug-2021
1-Aug-2021
2-Aug-2021
3-Aug-2021
11-Aug-2021
12-Aug-2021
13-Aug-2021
14-Aug-2021
15-Aug-2021