2014-01-23 55 views

回答

6

您可以使用此findAll方法:

def list = [] 
def matching = list.findAll { A a -> 
    a.B == a.C 
} 

更新

你可以得到所有对匹配的对象这样的:

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

这是怎么样的因为它不按照预期使用unique方法。

+0

嗨drorb,谢谢。也许我没有清楚地描述我的情况。我希望比较一个对象的A属性是否等于另一个对象的B属性。如果是,则返回这两个对象。 – Joy

+0

我认为你应该更新这个问题,并提供一个比较所有列表对象后所期望的例子 –

+0

感谢您的建议。我已经更新了这个问题,希望能够让问题更清楚。 – Joy

0

不知道你是否希望你的结果压扁与否,反正这里的返回元组的列表的解决方案:您的回复

def result = list.inject([]) {acc,a1-> 
    list.each {a2-> 
     if (!a1.is(a2) && a1.b == a2.c) { 
      acc << [a1,a2] 
     } 
    } 
    acc 
} 
相关问题