У меня есть карта в Groovy:Как реализовать компаратор для карты в Groovy?
['keyOfInterest' : 1, 'otherKey': 2]
Существует список, содержащий некоторые из этих карт. Я хочу знать, существует ли карта в списке с keyOfInterest
определенного значения.
Если типы данных были простыми объектами, я мог бы использовать indexOf()
, но я не знаю, как это сделать с более сложным типом. Например. (Взято из docs)
assert ['a', 'b', 'c', 'd', 'c'].indexOf('z') == -1 // 'z' is not in the list
Я хотел бы сделать что-то вроде:
def mapA = ['keyOfInterest' : 1, 'otherKey': 2]
def mapB = ['keyOfInterest' : 3, 'otherKey': 2]
def searchMap = ['keyOfInterest' : 1, 'otherKey': 5]
def list = [mapA, mapB]
assert list.indexOf(searchMap) == 0 // keyOfInterest == 1 for both mapA and searchMap
Есть ли способ сделать это с помощью более сложных объектов, таких как карты, легко?
В то время как это работает, он не находит ИНДЕКС, как указано в примерах ... вот почему findIndexOf() – billjamesdev
с использованием 'indexOf()' (похоже на JavaScript) был одним из подходов, используемых для поиска присутствия элемента. Однако 'findIndexOf (groovy.lang.Closure)' принимает замыкание, подобное 'find()'. Это дает хороший момент. С Groovy 2.4, 'indexed()' преобразует список, чтобы создать карту, где индекс каждого элемента становится ключом. – dmahapatro