I have this code, which sorts an array list based on 3 variables
result.sort(Comparator.comparing(FeConsumptionChannelDTO::getMeterName)
.thenComparing(FeConsumptionChannelDTO::getValueTypeSeq)
.thenComparing(Comparator.comparing(FeConsumptionChannelDTO::getValidFrom).reversed())
);
But the last variable, getValidFrom can be null since it is OffsetDateTime. If it is null, it throws a NullPointerException. Is there a way to handle null values sorting this way? Or I have to create my own comparing method?
Advertisement
Answer
Use the nullsFirst() (null < non-null) or nullsLast() to account for nullability:
result.sort(Comparator.comparing(FeConsumptionChannelDTO::getMeterName)
.thenComparing(FeConsumptionChannelDTO::getValueTypeSeq)
.thenComparing(Comparator.nullsFirst(Comparator.comparing(FeConsumptionChannelDTO::getValidFrom)).reversed())
);