如何检查 groovy 数组/hash/Collection/list 中的元素?

如何计算数组是否包含元素? 我认为可能会有类似 [1, 2, 3].includes(1)的东西被评估为 true

278597 次浏览

对于列表,使用 contains:

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

一些语法糖

1 in [1,2,3]

对于列表来说,. include ()是最好的方法,但是对于映射来说,您需要使用. contsKey ()或. contsValue ()

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

如果你真的想在数组列表中使用 include 方法,只需要添加它:

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

重要得到使用。在对象集合(如域)上包含()。如果 Domain 声明包含一个 EqualsAndHashCode,或者一些其他的 equals ()实现来确定这些 Ojbects 是否相等,并且您已经像这样设置了它..。

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

然后。Include (myObjectToCompareTo)将使用 Collection 中每个 Object 实例的数据计算 myObjectToCompareTo 中的数据。因此,如果您的 equals 方法没有达到标准,就像我的方法一样,您可能会看到意想不到的结果。

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

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

您可以使用会员操作符:

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

会员操作符 Groovy

您也可以像下面这样使用带有正则表达式的匹配:

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