将地图列表标准化为子列表地图

时间:2019-04-02 20:39:04

标签: list groovy maps

这如何在常规中逆转?

即。

我要转这个:

[[a:“ c”,b:“ e”],[a:“ d”,b:“ f”]]-列表中可以包含更多元素

变成:[a:[“ c”,“ d”],b:[“ e”,“ f”]]

1 个答案:

答案 0 :(得分:0)

因此,我们可以:

将地图列表融合为一个长列表,其中每个元素都具有相同的k / v结构

然后按键分组

然后我们需要浏览这张新地图,并清理值

那使我们:

def result = [ [a:"c", b:"e"], [a:"d",b:"f"] ]
    *.collect { [k: it.key, v: it.value] } 
    .flatten()
    .groupBy { it.k }
    .collectEntries { a, b ->
        [a, b.v]
    }

assert result ==​ [a:['c', 'd'], b:['e', 'f']]​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​