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

如何判断一个数组是否包含一个元素? 我认为可能会有像[1,2,3].includes(1)那样的评估为true

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

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

一些语法糖

 1 in [1,2,3] 

对于列表,使用contains

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

如果你真的想要一个ArrayList的包含方法,只需添加它:

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

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

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

那么.contains(myObjectToCompareTo)将使用集合中每个Object实例的数据计算myObjectToCompareTo中的数据。 所以,如果你的平等方法没有达到鼻烟,那么你可能会看到意想不到的结果。

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

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