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
相关产品推荐
相关产品推荐

