Как удалить значения в Groovy карте - PullRequest
0 голосов
/ 13 июня 2018

Скажем, у меня есть эта карта

def map = [:]
map.put("us-east-1", ["vol-66c16ec2", "vol-654ce2c1", "vol-01234567"])
map.put("us-east-2", ["vol-12345678", "vol-87654321", "vol-abcdefgh"])

, что приводит к ...

{
  "us-east-1" : [
    "vol-66c16ec2", "vol-654ce2c1", "vol-01234567"
  ],
  "us-east-2" : [
    "vol-12345678", "vol-87654321", "vol-abcdefgh"
  ]
}

Как я могу выполнить итерацию по карте, поэтому когда значение = "vol-abcdefgh", я хочуудалить эту запись.Таким образом, псевдокод имеет вид ...

for (it=iterate_through_map) {
  if (it == "vol-abcdefgh") {
     remove_entry(it)
  }
}

, а полученная карта теперь ...

{
  "us-east-1" : [
    "vol-66c16ec2", "vol-654ce2c1", "vol-01234567"
  ],
  "us-east-2" : [
    "vol-12345678", "vol-87654321"
  ]
}

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Обратите внимание на следующее ( edit: обновлено с элегантным улучшением dmahapatro ):

def target = 'vol-abcdefgh'

def map2 = map.collectEntries { k, v -> [k, v - target] }

Я подтвердил, что он работает в конвейере Дженкинса (в отличие отоператор распространения, *).

0 голосов
/ 13 июня 2018

Прямой переход будет выглядеть примерно так:

map.values()*.removeAll{ 'vol-abcdefgh' == it }

Подробнее о removeAll() 1007 * см. документы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...