如何检查groovy数组/哈希/集合/列表中的元素?

如何检查groovy数组/哈希/集合/列表中的元素?

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

我如何确定数组是否包含元素?
我以为可能会出现[1, 2, 3].includes(1)之类的东西,其值为true


一些语法糖

1
1 in [1,2,3]

.contains()是列表的最佳方法,但是对于地图,您将需要使用.containsKey()或.containsValue()

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


对于列表,请使用contains

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

如果您确实希望在ArrayList上使用include方法,只需添加它:

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

重要说明:在诸如域之类的对象集合上使用.contains()。 如果Domain声明包含EqualsAndHashCode或其他equals()实现来确定那些Ojbects是否相等,并且已将其设置为...

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

然后.contains(myObjectToCompareTo)将使用集合中每个Object实例的数据评估myObjectToCompareTo中的数据。 因此,如果您的equals方法不能如我所愿,那么,您可能会看到意外的结果。


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

我这样做是这样的,所以如果有人正在寻找它,它就可以工作。


推荐阅读