2008-09-09 19 views

答えて

93

.containsは()のための最善の方法であり、リストの場合は、.containsKey()または.containsValue()を使用する必要があります。

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

また、あるキーの下にヌル値が含まれていないかどうかを調べるには、if(aMap ["aKey"] == aValue) 'という式を調べれば十分です。 –

30

を評価します[1,2,3].includes(1)のようなものがあるかもしれないと思った:

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

おそらくあなたは[1,2,3] .contains(1)と言ったかったでしょう。私が推測しているのは、関数自体が既にブール値を返すことを含んでいるからです。なぜそれをハードコードされた「真」と再度比較したいのですか? –

+3

@HarshayBuradkar本当に '真==真実 'を確かめるために、もちろん#ジョーク – Automatico

193

いくつかのシンタックスシュガー

1 in [1,2,3] 
+12

注意してください。 'def m = [a:true]; 'a' in m'→trueまだ 'def m = [a:false]; 'a' in m'→false! –

6

あなたが本当にあなたはそれを追加し、ArrayListの上の方法を含む場合:

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

重要ガッチャなドメインとして、オブジェクトのコレクションに.containsを()を使用してのために。ドメイン宣言がEqualsAndHashCode、またはいくつかの他のequals()これらのOjbectsのは同じである、とあなたはこのようにそれを設定しているかどうかを判断するために実装...

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

が含まれている場合は、.contains(myObjectToCompareTo)は評価しますmyObjectToCompareTo内のデータをCollection内の各Objectインスタンスのデータで置き換えます。したがって、あなたのequalsメソッドがsnuffまででなければ、私のように、予期せぬ結果が出る可能性があります。

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

私はこれを好きなので、誰かがそれを探しているなら動作します。

関連する問題