Ответ 1
Для сортировки с учетом регистров используйте
m.sort { it.value.toLowerCase() }
У меня есть карта, такая как
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"]
Спасибо!
Для сортировки с учетом регистров используйте
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
И wll print:
[jimmy:Funny man, janny:crazy girl, georges:massive fella, james:silly boy]
[janny:crazy girl, jimmy:Funny man, georges:massive fella, james:silly boy]
Если кто-то ищет, как выполнить работу в сценарии конвейера Jenkins, вам придется создать отдельный метод с аннотацией @NonCPS
для этого:
@NonCPS
def getSorted(def mapSizeMap){
mapSizeMap.sort(){ a, b -> b.value <=> a.value }
}
А затем вызовите его из сценария конвейера.
def sortedMapZoneMap = getSorted(mapZonesMap)
Вы можете, конечно, применить "чувствительную к регистру" логику сверху.