Adr*_* Be 13 sorting groovy map
我有一张地图如
m=[
"james":"silly boy",
"janny":"Crazy girl",
"jimmy":"funny man",
"georges":"massive fella"
];
Run Code Online (Sandbox Code Playgroud)
我希望按其值排序此映射但忽略大小写(这就是为什么需要自定义排序).因此我想我必须使用闭包实现自定义排序.但我是Groovy的新手,并且一直在努力完成这个非常简单的任务!
期望的结果将是:
["janny":"Crazy girl", "jimmy":"funny man", "georges":"massive fella", "james":"silly boy"]
Run Code Online (Sandbox Code Playgroud)
谢谢 !
doe*_*eri 34
要使用不区分大小写进行排序,请使用
m.sort { it.value.toLowerCase() }
Run Code Online (Sandbox Code Playgroud)
假设您想要对值进行排序,您可以这样做:
Map m =[ james :"silly boy",
janny :"Crazy girl",
jimmy :"funny man",
georges:"massive fella" ]
Map sorted = m.sort { a, b -> a.value <=> b.value }
Run Code Online (Sandbox Code Playgroud)
如果有人正在寻找如何使其在 Jenkins 管道脚本中工作,您将必须为此创建一个带有@NonCPS注释的单独方法:
@NonCPS
def getSorted(def mapSizeMap){
mapSizeMap.sort(){ a, b -> b.value <=> a.value }
}
Run Code Online (Sandbox Code Playgroud)
然后从管道脚本中调用它。
def sortedMapZoneMap = getSorted(mapZonesMap)
您当然可以在顶部应用“区分大小写”的逻辑。
小智 5
顺便说一句,这是显示使用和不使用 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
Run Code Online (Sandbox Code Playgroud)
并将打印:
[jimmy:Funny man, janny:crazy girl, georges:massive fella, james:silly boy]
[janny:crazy girl, jimmy:Funny man, georges:massive fella, james:silly boy]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23185 次 |
| 最近记录: |