英文:
how to add a list of value in case of same key for hashmap in groovy
问题
需要将特定键的值列表关联起来
例如,
listTags= ['A:1.1.1.1', 'B:1.1.2.1', 'C:1.1.3.1', 'B:1.1.4.1']
tags = [ : ]
listTags.each { it ->
tags.put(it.split(':')[0], it.split(':')[1] )
}
println tags
结果: [A:1.1.1.1, B:1.1.4.1, C:1.1.3.1]
期望结果: [A:1.1.1.1, B:[1.1.2.1, 1.1.4.1], C:1.1.3.1]
有建议吗?
谢谢
英文:
A need to associate the list of values for specific keys
for example,
listTags= ['A:1.1.1.1', 'B:1.1.2.1', 'C:1.1.3.1', 'B:1.1.4.1']
tags = [ : ]
listTags.each { it ->
tags.put(it.split(':')[0], it.split(':')[1] )
}
println tags
Result: [A:1.1.1.1, B:1.1.4.1, C:1.1.3.1]
Expected Result: [A:1.1.1.1, B:[1.1.2.1, 1.1.4.1] , C:1.1.3.1]
Any suggestion?
thanks
答案1
得分: 1
你可以使用 "inject" 来实现这个。
在这里,我们将列表中的所有字符串拆分,然后从一个空映射开始,将值附加到每个键的列表中。
def result = listTags*.split(':')
.inject([:].withDefault {[]}) { m, v ->
m[v[0]] << v[1]
m
}
英文:
You can use inject for this.
Here, we split all strings in the list and then starting with an empty map, append the values to a list for each key
listTags= ['A:1.1.1.1', 'B:1.1.2.1', 'C:1.1.3.1', 'B:1.1.4.1']
def result = listTags*.split(':')
.inject([:].withDefault {[]}) { m, v ->
m[v[0]] << v[1]
m
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论