Groovy映射列表按其他列表顺序自定义排序

Groovy映射列表按其他列表顺序自定义排序,groovy,Groovy,我有一张地图列表,如下所示: List listOfMap = [ [ "id": 20914, "objectProp": "document.forms[0].elements[9]", "locator": "dom" ], [ "id": 20916, "ob

我有一张地图列表,如下所示:

List listOfMap = [
            [
                "id": 20914,
                "objectProp": "document.forms[0].elements[9]",
                "locator": "dom"
            ],
            [
                "id": 20916,
                "objectProp": "//tr[5]/td[2]/select",
                "locator": "xpath"
            ], 
            [
                "id": 20917,
                "locator": "label",
                "objectProp": "Title"
            ], 
            [
                "id": 20919,
                "objectProp": "document.forms[0].elements['pt1:USma:0:MAnt1:1:pt1:pt_r1:0:AP1:NewPe1:0:pt_r1:0:r1:0:i1:6:selectOneChoice4']",
                "locator": "dom"
            ]
        ]
[[id:20917, locator:label, objectProp:Title], [id:20916, objectProp://tr[5]/td[2]/select, locator:xpath], [id:20914, objectProp:document.forms[0].elements[9], locator:dom], [id:20919, objectProp:document.forms[0].elements['pt1:USma:0:MAnt1:1:pt1:pt_r1:0:AP1:NewPe1:0:pt_r1:0:r1:0:i1:6:selectOneChoice4'], locator:dom]]
我想使用下面定位器的列表顺序对上面的列表进行排序:

List locatorPosition = ["id", "name", "tagName", "className", "linkText", "partialLinkText", "label", "cssSelector", "xpath", "dom"]
期望输出如下所示:

List listOfMap = [
            [
                "id": 20914,
                "objectProp": "document.forms[0].elements[9]",
                "locator": "dom"
            ],
            [
                "id": 20916,
                "objectProp": "//tr[5]/td[2]/select",
                "locator": "xpath"
            ], 
            [
                "id": 20917,
                "locator": "label",
                "objectProp": "Title"
            ], 
            [
                "id": 20919,
                "objectProp": "document.forms[0].elements['pt1:USma:0:MAnt1:1:pt1:pt_r1:0:AP1:NewPe1:0:pt_r1:0:r1:0:i1:6:selectOneChoice4']",
                "locator": "dom"
            ]
        ]
[[id:20917, locator:label, objectProp:Title], [id:20916, objectProp://tr[5]/td[2]/select, locator:xpath], [id:20914, objectProp:document.forms[0].elements[9], locator:dom], [id:20919, objectProp:document.forms[0].elements['pt1:USma:0:MAnt1:1:pt1:pt_r1:0:AP1:NewPe1:0:pt_r1:0:r1:0:i1:6:selectOneChoice4'], locator:dom]]
你们知道如何做到这一点吗?

试试:

List listOfMap = [
            [
                "id": 20914,
                "objectProp": "document.forms[0].elements[9]",
                "locator": "dom"
            ],
            [
                "id": 20916,
                "objectProp": "//tr[5]/td[2]/select",
                "locator": "xpath"
            ], 
            [
                "id": 20917,
                "locator": "label",
                "objectProp": "Title"
            ], 
            [
                "id": 20919,
                "objectProp": "document.forms[0].elements['pt1:USma:0:MAnt1:1:pt1:pt_r1:0:AP1:NewPe1:0:pt_r1:0:r1:0:i1:6:selectOneChoice4']",
                "locator": "dom"
            ]
        ]

def order = ["id", "name", "tagName", "className", "linkText", "partialLinkText", "label", "cssSelector", "xpath", "dom"]
def sorted = listOfMap.sort { order.indexOf(it.locator) }
assert sorted.locator == ['label', 'xpath', 'dom', 'dom']

对于这个
ListOfMap=[[“id”:20624,“objectProp”:“#userid”,“locator”:“cssselector”],[“id”:20628,“objectProp”:”//input[1],“locator”:“xpath”,我应该做些什么],[“id”:20631,“定位器”:“id”,“objectProp”:“userid”]]
这是失败的list@SaurabhGaur,什么是失败?因案例而失败。。但我是这样得到的…
listOfMap.sort{locatorPosition*.toLowerCase().indexOf(it.locator.toLowerCase())}