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

时间:2008-09-09 13:47:52

标签: arrays list groovy

如何确定数组是否包含元素? 我认为可能会有类似[1, 2, 3].includes(1)的内容,评估为true

8 个答案:

答案 0 :(得分:228)

一些语法糖

1 in [1,2,3]

答案 1 :(得分:119)

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

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

答案 2 :(得分:44)

对于列表,请使用contains

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

答案 3 :(得分:7)

如果你真的想在ArrayList上使用include方法,只需添加它:

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

答案 4 :(得分:4)

您可以使用成员资格运算符:

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

Membership operator Groovy

答案 5 :(得分:3)

重要提示在对象集合(如域)上使用.contains()。如果Domain声明包含一个EqualsAndHashCode,或者其他一些equals()实现来确定这些Ojbect是否相等,并且你已经将它设置为这样......

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

然后.contains(myObjectToCompareTo)将使用Collection中每个Object实例的数据评估myObjectToCompareTo中的数据。所以,如果你的等于方法不适合鼻烟,那么你可能会看到意想不到的结果。

答案 6 :(得分:1)

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

我是这样做的,所以如果有人正在寻找它,它会起作用。

答案 7 :(得分:0)

您还可以将匹配项与正则表达式一起使用,如下所示:

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