天天看點

【Groovy】map 集合 ( map 集合周遊 | 使用 map 集合的 find 方法周遊 map 集合 | 代碼示例 )

文章目錄

一、使用 map 集合的 find 方法周遊 map 集合二、代碼示例

一、使用 map 集合的 find 方法周遊 map 集合

使用 map 集合的 find 方法周遊 map 集合 , 傳入一個閉包參數 ;

該閉包中 , 可以有

1

1

1 個參數 , 也可以有

2

2

2 個參數 ;

  • 如果 有 1 個參數 , 則 傳遞 Entry 鍵值對 對象 ;
  • 如果有 2 個參數 , 則 傳遞 鍵 和 值 兩個對象 ;

該方法會傳回 map 集合中 第一個查找到的 Entry 鍵值對對象 , 該對象中包含一個 鍵 和 值 ;

​map 集合的 find 方法 函數原型 :​

/**
     * 查找與閉包條件比對的第一個條目。
     * 如果閉包包含兩個參數,則傳遞入口鍵和值。
     * 如果閉包包含一個參數,則映射。已傳遞Entry對象。
     * <pre class="groovyTestCase">assert [a:1, b:3].find { it.value == 3 }.key == "b"</pre>
     *
     * @param self    map 集合
     * @param closure 閉包條件 , 有 1 或 2 個參數
     * @return 傳回找到的第一個對象
     * @since 1.0
     */
    public static <K, V> Map.Entry<K, V> find(Map<K, V> self, @ClosureParams(MapEntryOrKeyValue.class) Closure<?> closure) {
        BooleanClosureWrapper bcw = new BooleanClosureWrapper(closure);
        for (Map.Entry<K, V> entry : self.entrySet()) {
            if (bcw.callForMap(entry)) {
                return entry;
            }
        }
        return null;
    }      

二、代碼示例

​代碼示例 :​

class Test {
    static void main(args) {

        // 建立鍵值對
        // 鍵 Key 可以不使用引号 , 可以使用單引号 '' , 也可以使用雙引号 ""
        def map = [J:"Java", "K":"Kotlin", 'G':"Groovy"]

        // 周遊 map 集合
        def entry = map.find { key, value ->
            value =~ "a"
        }

        // 列印查找結果
        println entry
    }
}      

​執行結果 :​

J=Java      

繼續閱讀