Нормализовать список карт в карту подсписков - PullRequest
0 голосов
/ 02 апреля 2019

Как это можно изменить в Groovy?

т.

Я хочу включить это:

[[a: "c", b: "e"], [a: "d", b: "f"]] - может иметь больше элементов в списке

в: [a: ["c", "d"], b: ["e", "f"]]

1 Ответ

0 голосов
/ 03 апреля 2019

Итак, мы можем:

Расплавить список карт в длинный список, где каждый элемент имеет общую структуру 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']]​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
...