1

現在ログインしているユーザー ロールのいずれかが特定のロール リストに含まれているかどうかを確認したいと考えています。ただし、任意の 2 つのコレクションにすることができます。

基本的に、[x1,x3,x4] コレクションのメンバーが [x2,x3,x7] に含まれているかどうかを確認したい

Groovy (Grails) でこれを行う方法は?

4

4 に答える 4

4

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).emptyorですが、解決策は最も直接的なものであり、(ここでの野生の推測)おそらく最もパフォーマンスの高いものであると思いa.any { it in b }ます。ボンネットの下のもの...しかし、ほぼすべてのGroovyメソッドは= Pを実行します)。disjointdisjoint

于 2012-06-27T13:16:00.683 に答える
1

リストの 1 つをセットに変換し、retainAllメソッドを使用して交点を見つけます。

def s1 = [x1,x3,x4] as Set
s1.retainAll([x2,x3,xy]).size() > 0
于 2012-06-27T13:02:21.547 に答える
0
boolean check(Collection c1, Collection c2) {
    for(def i in c1) {
        if(c2.contains(i)) {
            return true
            break
        }
    }
    return false
}
于 2012-06-27T13:12:02.503 に答える