¿Cuál es la mejor manera de obtener un mapa de la lista de claves / valores en groovy?

En python, puedo hacer lo siguiente:

keys = [1, 2, 3] values = ['a', 'b', 'c'] d = dict(zip(keys, values)) assert d == {1: 'a', 2: 'b', 3: 'c'} 

¿Hay una buena manera de construir un mapa en groovy, comenzando desde una lista de claves y una lista de valores?

Prueba esto:

 def keys = [1, 2, 3] def values = ['a', 'b', 'c'] def pairs = [keys, values].transpose() def map = [:] pairs.each{ k, v -> map[k] = v } println map 

Alternativamente:

 def map = [:] pairs.each{ map << (it as MapEntry) } 

También está la función collectEntries en Groovy 1.8

 def keys = [1, 2, 3] def values = ['a', 'b', 'c'] [keys,values].transpose().collectEntries { it } 

No hay nada integrado directamente en groovy, pero hay varias formas de resolverlo fácilmente, aquí hay una:

 def zip(keys, values) { keys.inject([:]) { m, k -> m[k] = values[m.size()]; m } } def result = zip([1, 2, 3], ['a', 'b', 'c']) assert result == [1: 'a', 2: 'b', 3: 'c']