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']
]
这是想要的结果
我有两个列表
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']
]
这是想要的结果