groovy 要映射的列表
groovy list to map
如何将此列表转换为地图?
def list = [[10, STOREA, NORTH], [9, STOREB, CENTER], [11, STOREC, CENTER]]
喜欢:
def map = [['NORTH': ['STORE': 'STOREA', 'QTY': 10]],['CENTER': ['STORE': 'STOREB', 'QTY': 9],['STORE': 'STOREC', 'QTY': 11]]
我开始在 list.each
上执行每个操作并添加一个新参数,但我没有成功
您正在寻找 groupBy
和 collectEntries
。 groupBy
通过闭包创建一个映射,returns 收集具有相同键的所有项目的键。然后 collectEntries
通过返回键和值(作为列表)为您构建一个映射从那个关闭。由于 groupby-map 包含所有原始列表项,我们 collect
使用 STORE/QTY 键将它们放入新地图中。
def list = [[10, 'STOREA', 'NORTH'], [9, 'STOREB', 'CENTER'], [11, 'STOREC', 'CENTER']]
def map = list.groupBy{ it[2] }.collectEntries{
[it.key, it.value.collect{ [STORE: it[1], QTY: it[0]] }]
}
println map.inspect()
//=> ['NORTH':[['STORE':'STOREA', 'QTY':10]], 'CENTER':[['STORE':'STOREB', 'QTY':9], ['STORE':'STOREC', 'QTY':11]]]
如何将此列表转换为地图?
def list = [[10, STOREA, NORTH], [9, STOREB, CENTER], [11, STOREC, CENTER]]
喜欢:
def map = [['NORTH': ['STORE': 'STOREA', 'QTY': 10]],['CENTER': ['STORE': 'STOREB', 'QTY': 9],['STORE': 'STOREC', 'QTY': 11]]
我开始在 list.each
上执行每个操作并添加一个新参数,但我没有成功
您正在寻找 groupBy
和 collectEntries
。 groupBy
通过闭包创建一个映射,returns 收集具有相同键的所有项目的键。然后 collectEntries
通过返回键和值(作为列表)为您构建一个映射从那个关闭。由于 groupby-map 包含所有原始列表项,我们 collect
使用 STORE/QTY 键将它们放入新地图中。
def list = [[10, 'STOREA', 'NORTH'], [9, 'STOREB', 'CENTER'], [11, 'STOREC', 'CENTER']]
def map = list.groupBy{ it[2] }.collectEntries{
[it.key, it.value.collect{ [STORE: it[1], QTY: it[0]] }]
}
println map.inspect()
//=> ['NORTH':[['STORE':'STOREA', 'QTY':10]], 'CENTER':[['STORE':'STOREB', 'QTY':9], ['STORE':'STOREC', 'QTY':11]]]