Groovy custom сортирует карту по значению

у меня есть карта, такая как

m=[
     "james":"silly boy",
     "janny":"Crazy girl",
     "jimmy":"funny man",
     "georges":"massive fella"
];

Я хочу отсортировать эту карту по ее значению, но игнорируя делу (именно поэтому требуется пользовательская сортировка). Поэтому я решил реализовать пользовательскую сортировку с помощью закрытия. Но я новичок в Groovy и изо всех сил пытаюсь выполнить эту очень простую задачу!

желаемые результаты были бы:

["janny":"Crazy girl", "jimmy":"funny man", "georges":"massive fella", "james":"silly boy"]

спасибо !

3 ответов


для сортировки без учета регистра используйте

m.sort { it.value.toLowerCase() }

предполагая, что вы хотите сортировать по значению, вы можете просто сделать:

Map m =[ james  :"silly boy",
         janny  :"Crazy girl",
         jimmy  :"funny man",
         georges:"massive fella" ]

Map sorted = m.sort { a, b -> a.value <=> b.value }

кстати, вот код, который показывает различную сортировку С и без toLowerCase ():

Map m =[ james  :"silly boy",
         janny  :"crazy girl",
         jimmy  :"Funny man",
         georges:"massive fella" ]
Map sorted = m.sort { a, b -> a.value <=> b.value }
println sorted
sorted = m.sort { a, b -> a.value.toLowerCase() <=> b.value.toLowerCase() }
println sorted

и будет печатать:

[jimmy:Funny man, janny:crazy girl, georges:massive fella, james:silly boy]
[janny:crazy girl, jimmy:Funny man, georges:massive fella, james:silly boy]