映射到地图列表

时间:2014-03-05 22:39:37

标签: groovy

我的原始列表看起来像

def l = [a:apple, a:application, b:batch, c:commandLine, c:crash]

我需要将其转换为

[ ["a":"apple"],["a":"application"],["b":"batch"],["c":"commandLine"],["c":"crash"] ]

如何转换它?

1 个答案:

答案 0 :(得分:1)

您输入的列表不是无效的Groovy,因此(至少)有两种可能的假设:

如果您的输入是地图,例如:

def l = [a: 'apple', b: 'batch']

你可以这样做:

l.collect { k,v -> [(k): v] }

如果您的输入是类似地图字符串的列表,例如:

def l = ['a:apple', 'b:batch']

你需要这样的东西:

l.collect {
    def tokens = it.split(/:/)
    [(tokens[0]): tokens[1]]
}

<强>更新
或者更简单的方法:

l.collect { it.split(/:/).toSpreadMap() }

SpreadMap

结尾