Как проверить, если элемент в groovy array / hash / collection / list?



Как я могу выяснить, если массив содержит элемент?
Я думал, там может быть что-то вроде [1, 2, 3].includes(1) Что бы оценить как true.

617   6  

6 ответов:

.contains () является лучшим методом для списков, но для карт вам нужно будет использовать .containsKey () or .containsValue()

[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')

синтаксис сахара

1 in [1,2,3]

для списков, используйте contains:

[1,2,3].contains(1) == true

Если вы действительно хотите, чтобы ваш метод includes был включен в ArrayList, просто добавьте его:

ArrayList.metaClass.includes = { i -> i in delegate }

важно получил для использования .содержит () в коллекции объектов, таких как Домены. Если объявление домена содержит 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')}

Я сделал это так, чтобы он работал, если кто-то ищет его.

Comments

    Ничего не найдено.