Skip to content

Instantly share code, notes, and snippets.

@timyates
Created August 10, 2012 14:02
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timyates/3314416 to your computer and use it in GitHub Desktop.
Save timyates/3314416 to your computer and use it in GitHub Desktop.
Sort with multiple comparators
List list = [
[id:0, firstName: 'Sachin', lastName: 'Tendulkar', age: 40 ],
[id:1, firstName: 'Sachin', lastName: 'Tendulkar', age: 103 ],
[id:2, firstName: 'Ajay', lastName: 'Tendulkar', age: 48 ],
[id:3, firstName: 'Virendra', lastName: 'Sehwag', age: 5 ],
[id:4, firstName: 'Virendra', lastName: 'Sehwag', age: 50 ],
[id:5, firstName: 'Sachin', lastName: 'Nayyar', age: 15 ]
]
Collection.metaClass.sort = { boolean mutate, Closure... closures ->
delegate.sort( mutate ) { a, b ->
closures.findResult { c -> c( a ) <=> c( b ) ?: null }
}
}
list.sort( false, { it.firstName }, { it.lastName }, { it.age } )*.id
@antsmartian
Copy link

Nice. Happy to see that you have used Indian Cricket players :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment