文章目錄
一、使用 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