如何确定数组是否包含元素?
我认为可能会有类似[1, 2, 3].includes(1)
的内容,评估为true
。
答案 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)
答案 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.*")