我有一张地图,例如
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"]
谢谢!
答案 0 :(得分:32)
要使用不区分大小写进行排序,请使用
m.sort { it.value.toLowerCase() }
答案 1 :(得分:9)
假设您想要对值进行排序,您可以这样做:
Map m =[ james :"silly boy",
janny :"Crazy girl",
jimmy :"funny man",
georges:"massive fella" ]
Map sorted = m.sort { a, b -> a.value <=> b.value }
答案 2 :(得分:2)
顺便说一句,这里的代码显示了使用和不使用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]
答案 3 :(得分:2)
如果有人在寻找如何在Jenkins管道脚本中工作的方法,则必须为此创建一个带有@NonCPS
注释的单独方法:
@NonCPS
def getSorted(def mapSizeMap){
mapSizeMap.sort(){ a, b -> b.value <=> a.value }
}
然后从管道脚本中调用它。
def sortedMapZoneMap = getSorted(mapZonesMap)
您当然可以在顶部应用“区分大小写”逻辑。