Используйте метод find коллекции карт, чтобы просмотреть коллекцию карт и передать параметр закрытия;
В этом замыкании может быть
параметры, также могут быть
параметры;
Параметры, затем передайте объект пары ключ-значение Entry;
Передаются параметры, затем два объекта: ключ и значение;
Этот метод вернет первый найденный объект пары ключ-значение Entry в коллекции карт, который содержит ключ и значение;
Найдите прототип функции метода коллекции карт:
/**
* Найдите первую запись, соответствующую условию закрытия.
* еслискрытие включает в себя два параметра,нопередача Входключиценить。 * Еслизакрытие содержит один параметр, но никакое сопоставление уже не передано в объект 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