banderson623
banderson623

Reputation: 2866

How to check if element in groovy array/hash/collection/list?

How do I figure out if an array contains an element? I thought there might be something like [1, 2, 3].includes(1) which would evaluate as true.

Upvotes: 167

Views: 328296

Answers (8)

banderson623
banderson623

Reputation: 2866

For lists, use contains():

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

Upvotes: 73

dahernan
dahernan

Reputation: 3133

Some syntactic sugar

1 in [1,2,3]

Upvotes: 293

ninj
ninj

Reputation: 21

You can also use matches with regular expression like this:

boolean bool = List.matches("(?i).*SOME STRING HERE.*")

Upvotes: -1

MagGGG
MagGGG

Reputation: 20946

You can use Membership operator:

def list = ['Grace','Rob','Emmy']
assert ('Emmy' in list)  

Membership operator Groovy

Upvotes: 13

HinataXV
HinataXV

Reputation: 41

def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}

I did it like this so it works if someone is looking for it.

Upvotes: 3

Twelve24
Twelve24

Reputation: 637

IMPORTANT Gotcha for using .contains() on a Collection of Objects, such as Domains. If the Domain declaration contains a EqualsAndHashCode, or some other equals() implementation to determine if those Ojbects are equal, and you've set it like this...

import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")

then the .contains(myObjectToCompareTo) will evaluate the data in myObjectToCompareTo with the data for each Object instance in the Collection. So, if your equals method isn't up to snuff, as mine was not, you might see unexpected results.

Upvotes: 3

John Flinchbaugh
John Flinchbaugh

Reputation: 2338

If you really want your includes method on an ArrayList, just add it:

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

Upvotes: 9

shemnon
shemnon

Reputation: 5368

.contains() is the best method for lists, but for maps you will need to use .containsKey() or .containsValue()

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

Upvotes: 162

Related Questions