按Groovy Jenkins管道脚本中的值对Map进行排序

mzsu5hc0  于 2022-09-21  发布在  Jenkins
关注(0)|答案(1)|浏览(206)

如何对Map进行自定义排序,例如在Jekins管道脚本中按值排序?

此代码在Jenkins管道脚本中不太起作用:

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

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

Map仍未排序。

我决定用更好的名称和标签来创建一个单独的问题,因为很多人都在努力在这里找到答案:Groovy custom sort a map by value

gupuwyp2

gupuwyp21#

为此,您必须使用@NonCPS注解创建一个单独的方法:

@NonCPS
def getSorted(def toBeSorted){
    toBeSorted.sort(){ a, b -> b.value <=> a.value }
}

然后从管道脚本调用它。

Map unsortedMap =[ james  :"silly boy",
         janny  :"Crazy girl",
         jimmy  :"funny man",
         georges:"massive fella" ]
def sortedMap = getSorted(unsortedMap)

相关问题