


Для списков используйте contains:
[1,2,3].contains(1) == true
Вероятно, вы хотели сказать [1,2,3] .contains (1). Поскольку я предполагаю, что функция contains сама уже возвращает логическое значение. Почему вы хотите снова сравнить это с жестко запрограммированной «истиной».
@HarshayBuradkar Чтобы убедиться, что true == true, конечно, # шутка
Немного синтаксического сахара
1 in [1,2,3]
Осторожный. def m = [a: true]; 'a' in m → правда, но def m = [a: false]; 'a' in m → ложь!
Как вы это отрицаете?
.contains () - лучший метод для списков, но для карт вам нужно будет использовать .containsKey () или .containsValue ()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
И, кроме того, чтобы проверить, содержит ли карта какое-либо ненулевое значение под определенным ключом, достаточно проверить следующее выражение if (aMap["aKey"]==aValue).
Если вам действительно нужен метод include в ArrayList, просто добавьте его:
ArrayList.metaClass.includes = { i -> i in delegate }
ВАЖНО! Попробуй использовать .contains () для коллекции объектов, таких как домены. Если объявление домена содержит EqualsAndHashCode или какую-либо другую реализацию equals (), чтобы определить, равны ли эти Ojbects, и вы установили его следующим образом ...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
тогда .contains (myObjectToCompareTo) будет оценивать данные в myObjectToCompareTo с данными для каждого экземпляра объекта в коллекции. Итак, если ваш метод equals не подходит, как мой, вы можете увидеть неожиданные результаты.
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}
Сделал вот так, работает, если кто то ищет.
Вы можете использовать оператор членства:
def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)
Вы также можете использовать совпадения с регулярным выражением, например:
boolean bool = List.matches("(?i).*SOME STRING HERE.*")
Можете ли вы найти индекс также и в том месте, где находится этот равный элемент в списке?