回答:
.contains()はリストに最適な方法ですが、マップの場合は.containsKey()または.containsValue()を使用する必要があります
[a:1,b:2,c:3].containsValue(3)
[a:1,b:2,c:3].containsKey('a')
if(aMap["aKey"]==aValue)
です。
構文糖
1 in [1,2,3]
def m = [a: true]; 'a' in m
→まだ真def m = [a: false]; 'a' in m
→偽!
リストの場合は、次を使用しますcontains
。
[1,2,3].contains(1) == true
true == true
に、もちろん#joke
ArrayListにincludeメソッドが本当に必要な場合は、それを追加するだけです。
ArrayList.metaClass.includes = { i -> i in delegate }
ドメインなどのオブジェクトのコレクションで.contains()を使用するための重要な注意点。Domain宣言にEqualsAndHashCodeまたは他のequals()実装が含まれていて、それらのオブジェクトが等しいかどうかを判断し、次のように設定した場合...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
次に、.contains(myObjectToCompareTo)は、コレクション内の各Objectインスタンスのデータを使用して、myObjectToCompareToのデータを評価します。したがって、あなたのequalsメソッドが十分ではない場合、私の場合と異なり、予期しない結果が生じる可能性があります。