我有两个长度相同的String[]
。它们是"关联数组"从某种意义上说,一个字符串的值是键而另一个的字符串值是值:
String[] keys = { 'fizz', 'buzz', 'bupo' }
String[] values = { 'true', 'false', 'yes' }
我想将这两个关联数组转换为具有一些Groovy魔法的Map<String,String>
。到目前为止,我已经尝试了以下但是它无法正常工作:
Map<String,String> kvPairs = [keys, values]
我出错的任何想法?
答案 0 :(得分:6)
你可以这样做:
String[] keys = [ "fizz", "buzz", "bupo" ]
String[] vals = [ "true", "false", "yes" ]
Map<String, String> kvPairs = [ keys, vals ].transpose().collectEntries()
结果:
[fizz:true, buzz:false, bupo:yes]
答案 1 :(得分:0)
就像你说的那样
我有两个长度相同的String []。
然后你可以利用groovy的eachWithIndex
功能
如果你有
String[] keys = [ 'fizz', 'buzz', 'bupo' ]
String[] values = [ 'true', 'false', 'yes' ]
然后你可以简单地做
Map kvPairs = [:]
keys.eachWithIndex{ element, index ->
kvPairs << [(element) : values[index]]
}
println kvPairs
输出:
[fizz:true, buzz:false, bupo:yes]
答案 2 :(得分:0)
这并不是特别神奇,但它确实起到了作用。您可以在Groovy控制台中运行它。
String[] keys = ['fizz', 'buzz', 'bupo']
String[] values = ['true', 'false', 'yes']
Map<String, String> result = [:]
keys.eachWithIndex { key, index ->
result[key] = values[index]
}
// show the result
println result
用于创建数组的语法在Groovy(或Java)
中无效String[] keys = { 'fizz', 'buzz', 'bupo' }