Groovy中如何遍历Map列表并打印每个Map的键值对?
问题分析与解决方法
你的代码输出null null的原因很明确:m是完整的Map对象,它并没有key和value这两个直接属性,调用这两个不存在的属性自然会返回null。要正确打印每个Map的键值对,需要遍历Map内部的键值条目,或者利用Groovy的语法糖直接解构键和值。
正确实现方式
方式1:嵌套遍历Map的条目
遍历List中的每个Map,再遍历Map的每个entry对象来获取键和值:
#!/usr/local/bin/groovy List<Map<String,String>> list = [] Map<String, String> map1 = ["a":"a"] list.add(map1) Map<String, String> map2 = ["b":"b"] list.add(map2) list.each { map -> map.each { entry -> println "${entry.key} ${entry.value}" } }
方式2:直接解构键值对
利用Groovy的语法糖,在遍历Map时直接获取键和值参数:
list.each { map -> map.each { k, v -> println "$k $v" } }
方式3:针对单键值对的Map(你的场景)
如果列表中的每个Map都只有一个键值对,可以直接取Map的第一个条目:
list.each { map -> def (k, v) = map.first() println "$k $v" }
执行后的正确输出
a a b b
内容的提问来源于stack exchange,提问作者Chris F
相关产品推荐
相关产品推荐

