141

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

4

8 回答 8

266

一些语法糖

1 in [1,2,3]
于 2008-09-15T10:09:55.413 回答
150

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

[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
于 2008-09-15T20:44:19.883 回答
62

对于列表,使用contains

[1,2,3].contains(1) == true
于 2008-09-09T13:58:24.870 回答
8

如果你真的想在 ArrayList 上包含方法,只需添加它:

ArrayList.metaClass.includes = { i -> i in delegate }
于 2008-10-02T18:35:56.597 回答
6

您可以使用 Membership 运算符:

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

会员运营商 Groovy

于 2020-01-22T06:30:49.610 回答
3

在对象集合(例如域)上使用 .contains() 的重要问题。如果域声明包含 EqualsAndHashCode 或其他一些 equals() 实现以确定这些 Ojbect 是否相等,并且您已将其设置为...

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

然后 .contains(myObjectToCompareTo) 将使用集合中每个对象实例的数据评估 myObjectToCompareTo 中的数据。因此,如果您的 equals 方法不符合标准,而我的方法不是,您可能会看到意想不到的结果。

于 2014-12-31T18:20:33.317 回答
2
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}

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

于 2016-10-08T16:41:53.670 回答
0

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

boolean bool = List.matches("(?i).*SOME STRING HERE.*")
于 2020-06-23T14:43:31.693 回答