How to sort List of objects by some property
Java 8 Comparator is used to sort a List by a property. Given a List of Person objects, sorted them by age:
For descending order:
Comparator : The sorting wizard!
Comparator lets you define your own sorting mechanics. For multiple field sorting, use its magic spell: thenComparing!
Handling null values with grace, not the kind NullPointerException appreciates:
Performance matters in sorting. Specific comparison methods are available for primitive types like int:
Safety first! Avoid ClassCastException by ensuring the property types. This ain't a magic trick!
Custom comparison: For when you're feeling fancy
Override compare method in Comparator interface to define custom sorting logic:
Got a nifty little Comparator? Save it as static final variables for use whenever, wherever. It's the little sorting helper!
Lambdas, not the Greek letter
Use lambdas, because sometimes even Java likes to go to the "Modern Art" gallery of coding:
Sorting all the things
The natural order: Survival of the sorted
Classes with a natural order more powerful than gravity, implement the Comparable interface:
Fancy level-up: Advanced multi-field sorting
Create a series of comparators for multi-level sorting:
When life gives you Streams
Comparator can make Streams sorted():
Avoid the sorting banana peels
Keep an eye out for common traps:
- Cast exceptions: Comparing an apple and an orange? Be mindful of property types.
- Null values: Designate a corner for them with
Comparator.nullsFirst()orComparator.nullsLast(). Kick nulls to the curb! - Performance: Performance art? Nah, high-performing codes with specialized methods like
comparingInt.
Was this article helpful?