Ik gebruik dit om het nieuwste item te krijgen. Hoe kan ik ervoor zorgen dat dit null-veilig is en sorteert met nuldatums als laatste (oudste). createDt is een joda LocalDate-object.
Optional<Item> latestItem = items.stream()
.sorted((e1, e2) -> e2.getCreateDt().compareTo(e1.getCreateDt()))
.findFirst();
Antwoord 1, autoriteit 100%
Als het de Item
‘s zijn die mogelijk null zijn, gebruik dan de oplossing van @rgettman.
Als het de LocalDate
s zijn die mogelijk null zijn, gebruik dan dit:
items.stream()
.sorted(Comparator.comparing(Item::getCreateDt, Comparator.nullsLast(Comparator.reverseOrder())));
Houd er in beide gevallen rekening mee dat sorted().findFirst()
waarschijnlijk inefficiënt is, aangezien de meeste standaardimplementaties de hele stream eerst sorteren. Gebruik Stream.minin plaats daarvan.
Antwoord 2, autoriteit 23%
Je kunt van je eigen null-onveilige Comparator
een null-safe maken door deze Comparator.nullsLast
. (Er is ook een Comparator.nullsFirst
.)
Retourneert een null-vriendelijke comparator die
null
als groter beschouwt dan niet-null. Als beidenull
zijn, worden ze als gelijk beschouwd. Als beide niet-null zijn, wordt de opgegevenComparator
gebruikt om de volgorde te bepalen.
.sorted(Comparator.nullsLast(
(e1, e2) -> e2.getCreateDt().compareTo(e1.getCreateDt())))
.findFirst();