文章目录
一、使用 map 集合的 each 方法遍历 map 集合
二、代码示例
一、使用 map 集合的 each 方法遍历 map 集合
遍历 map 集合 , 可以调用 map 集合的 each 方法 ;
list 集合中 , 调用 each 方法 , 传入的闭包中有 1 11 个参数 ; 参考 【Groovy】集合遍历 ( 使用 for 循环遍历集合 | 使用集合的 each 方法遍历集合 | 集合的 each 方法返回值分析 ) 集合 ;
map 集合中 , 调用 each 方法 , 传入的闭包有 2 22 个参数 ; 2 22 个参数分别是 Key 和 Value , 这两个参数没有指定类型 , 会根据当前遍历的 map 集合进行自动类型适配 ;
map 集合的 each 方法 函数原型 :
/** * 允许使用闭包迭代映射。 * 如果闭包接受一个参数,那么它将被传递给映射。 * 否则,如果闭包采用两个参数,则将向其传递键和值。 * * <pre class="groovyTestCase">def result = "" * [a:1, b:3].each { key, value -> result += "$key$value" } * assert result == "a1b3"</pre> * <pre class="groovyTestCase">def result = "" * [a:1, b:3].each { entry -> result += entry } * assert result == "a=1b=3"</pre> * * 通常,无法保证地图内容的处理顺序。 * 在实践中,地图的特殊形式,例如树形图, * 将根据地图的自然顺序处理其内容。 * * @param self 要遍历的 map 集合 * @param closure 在映射的每个条目上应用1或2 arg闭包 * @return 返回 self 参数 * @since 1.5.0 */ public static <K, V> Map<K, V> each(Map<K, V> self, @ClosureParams(MapEntryOrKeyValue.class) Closure closure) { for (Map.Entry entry : self.entrySet()) { callClosureForMapEntry(closure, entry); } return self; }
二、代码示例
代码示例 :
class Test { static void main(args) { // 创建键值对 // 键 Key 可以不使用引号 , 可以使用单引号 '' , 也可以使用双引号 "" def map = [J:"Java", "K":"Kotlin", 'G':"Groovy"] // 遍历 map 集合 map.each { key, value -> println "${key} = ${value}" } } }
执行结果 :
J = Java K = Kotlin G = Groovy