10

Groovy の初心者なので、質問があります。2 つのリストがあり、最初のリストに存在する値が 2 番目のリストにも存在するかどうかを知りたいのですが、true または false を返す必要があります。

短いテストを作成しようとしましたが、機能しません...これが私が試したことです:

// List 1
def modes = ["custom","not_specified","me2"]
// List 2
def modesConf = ["me1", "me2"]
// Bool
def test = false

test = modesConf.any { it =~ modes }
print test

しかし、最初の配列の「me2」の値を「mex2」に変更すると、false を返さなければならないときに true が返されます

何か案が?

4

5 に答える 5

13

私が考えることができる最も簡単な方法はintersect、Groovy の真実を使用して開始することです。

def modes = ["custom","not_specified","me2"]
def modesConf = ["me1", "me2"]
def otherList = ["mex1"]

assert modesConf.intersect(modes) //["me2"]
assert !otherList.intersect(modes) //[]

assert modesConf.intersect(modes) == ["me2"]

アサーションがパスした場合、2 番目の操作を行わなくても共通要素を共通要素から取り出すことができます。:)

于 2013-08-30T14:02:43.573 に答える
1

true/false を返す disjoint()/intersect()/any({}) のいずれかを使用できます。以下に例を示します。

def list1=[1,2,3]

def list2=[3,4,5]
list1.disjoint(list2) // true means there is no common elements false means there is/are
list1.any{list2.contains(it)} //true means there are common elements

list1.intersect(list2) //[] empty list means there is no common element.
于 2013-08-30T17:11:18.743 に答える