Groovy 将两个列表转换为一个 Map [ Map<String,List<String>>]

Groovy transform two list into a Map [ Map<String,List<String>>]

我有两个列表

def listA = ['Yes','No','No','No','Yes','Yes']

def listB = ['option1','option2,'option3']

如何将此列表转换为地图? Map<String, List<String>>格式

例如

option1 : [Yes,No]
option2 : [No,No]
option3 :[Yes,Yes]

您可以使用整理、转置和收集条目:

def listA = ['Yes','No','No','No','Yes','Yes']
def listB = ['option1','option2','option3']

def result = [listB, listA.collate(2)].transpose().collectEntries()

所以我们在 listA 上调用 collate(2)。这使我们成为一个像

这样的列表
[
    ['Yes', 'No'],
    ['No', 'No'],
    ['Yes', 'Yes']
]

然后我们将其添加到带有 listB 的列表中,因此我们得到:

[
    ['option1', 'option2', 'option3'],
    [
        ['Yes', 'No'],
        ['No', 'No'],
        ['Yes', 'Yes']
    ]
]

然后我们可以调用 transpose(),它将列表配对,所以我们得到

[
    ['option1', ['Yes', 'No']],
    ['option2', ['No', 'No']],
    ['option3', ['Yes', 'Yes']]
]

最后,collectEntries 获取这些对,并将它们转换为映射条目,第一个元素是键,第二个元素是值。

[
    option1:['Yes', 'No'],
    option2:['No', 'No'],
    option3:['Yes', 'Yes']
]

这是想要的结果