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

问题描述 投票:0回答:8

如何判断数组是否包含某个元素? 我认为可能有像

[1, 2, 3].includes(1)
这样的东西,它会被评估为
true

arrays list groovy
8个回答
290
投票

一些语法糖

1 in [1,2,3]

160
投票

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

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

72
投票

对于列表,请使用

contains()
:

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

12
投票

您可以使用会员运营商:

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

会员运营商 Groovy


8
投票

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

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

3
投票

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

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

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


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

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


-1
投票

您还可以使用正则表达式进行匹配,如下所示:

boolean bool = List.matches("(?i).*SOME STRING HERE.*")
© www.soinside.com 2019 - 2024. All rights reserved.