在两个对象中属性Equal B属性的列表中过滤对象的好方法

Joy*_*Joy 0 groovy

我有对象列表(名称A),A有属性B和C.我需要在列表中找到B属性与另一个对象的C属性相等的对象.例如:

def objectList = [A1,A2,A3,A4,A5,A6,A7,A8]; 
if A1.B == A2.C then return A1,A2;
Run Code Online (Sandbox Code Playgroud)

有什么好方法吗?

Dro*_*sky 6

你可以使用findAll方法:

def list = []
def matching = list.findAll { A a ->
   a.B == a.C
}
Run Code Online (Sandbox Code Playgroud)

更新

您可以通过以下方式获取所有匹配对象:

def matching = []
list.unique { A a1, A a2 ->
    if (a1.B == a2.C || a1.C == a2.B) {
        matching << a1 << a2
    }
    return 1
}
Run Code Online (Sandbox Code Playgroud)

这是一种hacky解决方案,因为它没有按预期使用独特的方法.