prem
prem

Reputation: 1

Groovy sort a map

please can you help me with sorting a map

 def map = [
  [name:"Jerry", age: 42],
  [name:"Long", age: 25],
  [name:"Dustin", age: 29],
  [name:"Bin", age: 34]]

  map.each{entry -> println "$entry.name : $entry.age : $entry.city" }

gives me

Jerry : 42 : null
Long : 25 : null
Dustin : 29 : null
Bin : 34 : null

I want to sort this by age descending to get

Jerry : 42 : null
Bin : 34 : null
Dustin : 29 : null
Long : 25 : null

 sortedone = map.sort { a, b -> a.value <=> b.value }

does not work for me. Please can you help?

Upvotes: 0

Views: 92

Answers (1)

Jeff Scott Brown
Jeff Scott Brown

Reputation: 27200

You can use the sort(Closure) method:

def map = [
  [name:"Jerry", age: 42],
  [name:"Long", age: 25],
  [name:"Dustin", age: 29],
  [name:"Bin", age: 34]]

map.sort { -it.age }

println map

[[name:Jerry, age:42], [name:Bin, age:34], [name:Dustin, age:29], [name:Long, age:25]]

Upvotes: 4

Related Questions