You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Groovy中如何按属性值对数组进行排序?

列表排序失败问题

问题背景

初始创建一个包含ID的列表,通过在另一个列表linesList中查找对应ID的位置,为每个元素添加pos属性后生成新列表,但调用排序方法后列表并未按预期排序,问题发生在Jenkins运行环境中。

代码示例

def mylist=[]
def mylistData=[:]
mylistData.id="61628d82a174599d7ae7c61bf6d216f22d5139da"
mylist.add(mylistData)
                    
mylistData=[:]
mylistData.id="0cc18d6d3c93240ab93457063b4974a1270104c0"
mylist.add(mylistData)

mylistData=[:]
mylistData.id="bb007a1c9f594b55662a5b36d5f5b1a7651f3b0f"
mylist.add(mylistData)

mylistData=[:]
mylistData.id="087e7538583ee261944b66491391947d3a002380"
mylist.add(mylistData)

mylistData=[:]
mylistData.id="587ee2b1482509e12d5657bc55db70c9b482eddd"
mylist.add(mylistData)
def list=[]
//linesList=["587ee2b1482509e12d5657bc55db70c9b482eddd"] //包含50个类似值
for(item in mylist){
    item.pos=linesList.findIndexOf { it == item.id }.toInteger()
    list.add(item)
}
list.sort{ it.pos }
println list // 列表未排序
println list.sort{ it.pos }    // 列表未排序

预期排序结果

[{id=587ee2b1482509e12d5657bc55db70c9b482eddd, pos=0},{id=bb007a1c9f594b55662a5b36d5f5b1a7651f3b0f, pos=19},  {id=087e7538583ee261944b66491391947d3a002380, pos=37},
{id=61628d82a174599d7ae7c61bf6d216f22d5139da, pos=45},{id=0cc18d6d3c93240ab93457063b4974a1270104c0, pos=54}]

实际输出结果

[{id=61628d82a174599d7ae7c61bf6d216f22d5139da, pos=45}, {id=0cc18d6d3c93240ab93457063b4974a1270104c0, pos=54}, {id=bb007a1c9f594b55662a5b36d5f5b1a7651f3b0f, pos=19}, {id=087e7538583ee261944b66491391947d3a002380, pos=37}, {id=587ee2b1482509e12d5657bc55db70c9b482eddd, pos=0}]

已尝试的解决方案

list.sort{ it.pos }

内容的提问来源于stack exchange,提问作者R_SS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:12:11