Построение карты с ключами из списка A и значениями из списка B - PullRequest
0 голосов
/ 30 марта 2019

Я уже проверил Как лучше всего получить карту из списка ключей / значений в groovy?

и попробовал решение, приведенное там, но в моем случае он дал мне только картуразмер 2, вместо размера 6.

В моем случае listA - это: [ABC, DEF, GHI, JKL, MNO, PQR]

ListB - это: [1,2,1,1, 1,1]

def pairs = [listA, listB].transpose
def map = [:]
pairs.each{ map << (it as MapEntry) }
println(map)

Это дает мне:

[ABC:1, DEF:1]

Как мне получить карту, которая выглядит так:

[ABC:1, DEF:2, GHI:1,JKL:1, MNO:1, PQR:1]

Ответы [ 2 ]

2 голосов
/ 30 марта 2019

Вы можете упростить это до

def listA = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR']
def listB = [1,2,1,1,1,1]

def map = [listA, listB].transpose().collectEntries()

assert map == [ABC:1, DEF:2, GHI:1,JKL:1, MNO:1, PQR:1]

Чтобы получить список записей, вероятно, более полезно изменить это на:

def map = [listA, listB].transpose().collect { [id: it[0], num: it[1] as Integer] }

Затем вы получите следующий список:

assert map == [
    [id: 'ABC', num:1],
    [id: 'DEF', num:2],
    [id: 'GHI', num:1],
    [id: 'JKL', num:1],
    [id: 'MNO', num:1],
    [id: 'PQR', num:1]
]
0 голосов
/ 30 марта 2019

я запускаю ваш код, но я получаю различный вывод, который равен [ABC: 1, DEF: 2, GHI: 1, JKL: 1, MNO: 1, PQR: 1] (я использую webconsole )

def listA = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQR']
def listB = [1,2,1,1,1,1]

def pairs = [listA, listB].transpose()
def map = [:]
pairs.each{ map << (it as MapEntry) }
println(map)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...