Reputation: 717
I was writing a code to validate states of my object. The code I wrote sorts the input list of objects and then does a range check.
private boolean validateStates(List<ConcessionState> concessionStateList) {
long startRange,endRange = 0;
Collections.sort(concessionStateList , new Comparator<ConcessionState>() {
@Override
public int compare(ConcessionState o1, ConcessionState o2) {
return (int)(long)(o1.getRangeStart() - o2.getRangeStart());
}
........
}
Is there a way to write this sort using Lambda expressions?
Upvotes: 1
Views: 326
Reputation: 421040
You use Comparator.comparing(Function<? super T,? extends U> keyExtractor)
.
As follows:
private boolean validateStates(List<ConcessionState> concessionStateList) {
long startRange,endRange = 0;
Collections.sort(concessionStateList,
Comparator.comparing(ConcessionState::getRangeStart));
.......
}
If you want it in descending order, you do
Comparator.comparing(ConcessionState::getRangeStart)
.reversed()
Upvotes: 4