找不到collectEntries键

时间:2016-12-07 16:46:19

标签: groovy

我正在使用collectEntries从不同的地图构建地图。但是当我尝试根据键获取值时。它返回null,即使我打印整个地图时键也在那里。

static void main(String[] args) {
    Map<String, List<String>> multiMap = ['apple': ['granny', 'delicious']]
    Map m = multiMap.collectEntries { String k, List<String> v ->
        v.collectEntries { String subkey -> ["${k}-${subkey}": subkey] }
    }

    println m
    println m.keySet()
    println m['apple-granny']
    println m[m.keySet()[0]]
}

输出结果为:

[apple-granny:granny, apple-delicious:delicious]
[apple-granny, apple-delicious]
null
null

为什么我无法从地图中检索值?我应该怎么做?

1 个答案:

答案 0 :(得分:2)

因为您的密钥是GString实例,而不是String ..(Seemanyquestionsonhere,{{3这个问题)

将您的collectEntries行更改为:

    v.collectEntries { String subkey -> [("${k}-${subkey}".toString()): subkey] }

要将密钥强制为字符串,它将正常工作