如何确定一个数组是否包含某个元素?
我认为可能有类似于[1, 2, 3].includes(1)
这样的东西,其结果将会是true
。
一些语法糖
1 in [1,2,3]
def m = [a: true]; 'a' in m
→ 结果为 true ,但 def m = [a: false]; 'a' in m
→ 结果为 false! - Jesse Glick!(1 in [1,2,3])
-> !(1在[1,2,3]中)
- Leponzo[a:false]
的方法是使用 contains。[a: false].containsKey('a')
-> true。 - wirednikoa
为false
时,这甚至可能是期望的结果,这取决于问题是什么。) - undefined.contains()是处理列表最好的方法,但对于映射,您需要使用.containsKey()或.containsValue()
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
。 - Naeel Maqsudov对于列表,请使用contains
:
[1,2,3].contains(1) == true
ArrayList.metaClass.includes = { i -> i in delegate }
当使用.contains()方法在对象集合中查找内容时,需要注意以下重要问题。如果这些对象的声明包含了EqualsAndHashCode或其他equals()实现方式来判断它们是否相等,并且你已将其设置为如下代码...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
那么 .contains(myObjectToCompareTo) 将会将 myObjectToCompareTo 中的数据与 Collection 中每个 Object 实例的数据进行比较。因此,如果您的 equals 方法不够完善,就像我的一样,您可能会看到意想不到的结果。
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}
你也可以像这样使用正则表达式匹配:
boolean bool = List.matches("(?i).*SOME STRING HERE.*")
assert [12,42,33].indexOf(42) == 1
断言[12,42,33]
中的42
的索引为1
。 - Thomas Traude