現在ログインしているユーザー ロールのいずれかが特定のロール リストに含まれているかどうかを確認したいと考えています。ただし、任意の 2 つのコレクションにすることができます。
基本的に、[x1,x3,x4] コレクションのメンバーが [x2,x3,x7] に含まれているかどうかを確認したい
Groovy (Grails) でこれを行う方法は?
現在ログインしているユーザー ロールのいずれかが特定のロール リストに含まれているかどうかを確認したいと考えています。ただし、任意の 2 つのコレクションにすることができます。
基本的に、[x1,x3,x4] コレクションのメンバーが [x2,x3,x7] に含まれているかどうかを確認したい
Groovy (Grails) でこれを行う方法は?
Collection#disjoint
次の方法を使用できます。
def a = [5, 4, 3]
def b = [7, 6, 5]
// a contains a member of b if they are not disjoint.
assert !a.disjoint(b)
assert a.disjoint([8, 7, 6])
他の選択肢は!a.intersect(b).empty
orですが、解決策は最も直接的なものであり、(ここでの野生の推測)おそらく最もパフォーマンスの高いものであると思いa.any { it in b }
ます。ボンネットの下のもの...しかし、ほぼすべてのGroovyメソッドは= Pを実行します)。disjoint
disjoint
リストの 1 つをセットに変換し、retainAllメソッドを使用して交点を見つけます。
def s1 = [x1,x3,x4] as Set
s1.retainAll([x2,x3,xy]).size() > 0
boolean check(Collection c1, Collection c2) {
for(def i in c1) {
if(c2.contains(i)) {
return true
break
}
}
return false
}