Groovy脚本如何获取Map中指定key的所有值?
问题分析
你用Groovy字面量创建的mymap会自动去重重复key,后面的name:"dinesh"和likes:"ice"会覆盖前面的name:"raju"和likes:"cheese",所以实际你的map里只有两组键值对,调用find自然只能拿到最后一个likes的值。
解决方案
要存储同一个key对应的多个值,需要使用支持多值的Map结构,以下两种方式都可以实现:
方式1:使用Groovy的MultiValueMap注解
@Grab('org.codehaus.groovy:groovy-all:3.0.17') import groovy.transform.MultiValueMap @MultiValueMap def mymap = [:] mymap.put("name", "raju") mymap.put("likes", "cheese") mymap.put("name", "dinesh") mymap.put("likes", "ice") def x = mymap.get("likes") println x.join(", ") // 输出 cheese, ice
方式2:手动构建存列表的Map
def mymap = [:].withDefault { [] } mymap.name << "raju" mymap.likes << "cheese" mymap.name << "dinesh" mymap.likes << "ice" def x = mymap.likes println x.join(", ") // 输出 cheese, ice
内容的提问来源于stack exchange,提问作者Dinesh Kumar
相关产品推荐
相关产品推荐

