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 に include メソッドが必要な場合は、それを追加するだけです。
ArrayList.metaClass.includes = { i -> i in delegate }
重要 ドメインなどのオブジェクトのコレクションで .contains() を使用する場合の注意点。Domain 宣言に EqualsAndHashCode またはこれらの Ojbect が等しいかどうかを判断するための他のquals() 実装が含まれており、それを次のように設定した場合...
import groovy.transform.EqualsAndHashCode
@EqualsAndHashCode(includes = "settingNameId, value")
次に、 .contains(myObjectToCompareTo) は、コレクション内の各オブジェクト インスタンスのデータを使用して myObjectToCompareTo 内のデータを評価します。したがって、私がそうでなかったように、あなたのequalsメソッドが十分に機能していない場合、予期しない結果が発生する可能性があります。
def fruitBag = ["orange","banana","coconut"]
def fruit = fruitBag.collect{item -> item.contains('n')}
誰かがそれを探している場合に機能するように、私はこのようにしました。
所属していません StackOverflow