在groovy中转换Map的值

时间:2017-07-18 15:56:27

标签: groovy

假设我有一张地图Map<String, List<Integer>>

我希望通过对每对密钥和嵌套列表元素应用Map<String, Map<Integer, Object>>方法,将此映射转换为convert()

Object convert(String key, Integer value)

我怎样才能实现这一目标?

我试过这样的事情:

map.collect { key, list ->
    key: list.collectEntries {
        [(element): convert(key, element)]
    }
}

但我得到了ClassCastException: ArrayList cannot be cast to Map

2 个答案:

答案 0 :(得分:4)

不在电脑上,但请尝试

map.collectEntries { key, list ->
    [key, list.collectEntries { element ->
        [element, convert(key, element)]
    }]
}

答案 1 :(得分:1)

您可以稍微简化一下:

def convert = { it -> it + 1 };
Map<String, List<Integer>> map = [foo: [1, 2, 3], bar: [4, 5, 6]];
map.collectEntries { k, v -> [(k): v.collect { convert(it) }] }