【发布时间】:2016-01-25 11:11:27
【问题描述】:
所以我有一个字符串,看起来有点像这样:
text = "foo/bar;baz/qux"
我的最终目标是将这个字符串拆分成这样的 Multimap:
["level1" : ["foo", "baz"], "level2" : ["bar", "qux"]]
我还在 LinkedHashMap 的元类中添加了 Multimap 支持:
LinkedHashMap.metaClass.multiPut << { key, value ->
delegate[key] = delegate[key] ?: []; delegate[key] += value
}
字符串需要在分号处分割,然后在正斜杠处再次分割。目前我正在嵌套的 for 循环中填充我的 Multimap,但显然有一种 Groovier 方法可以做到这一点。因此我想知道我的选择是什么?
我的想法是这样的:
def final myMap = text.split(';')
.collectEntries { it.split('/')
.eachWithIndex { entry, index -> ["level${index + 1}" : entry] }}
【问题讨论】:
标签: collections groovy metaclass multimap