我有对象列表(名称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;
有什么好办法吗?
答案 0 :(得分: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
}
这是一种hacky解决方案,因为它没有按预期使用unique方法。
答案 1 :(得分:0)
不确定您是否希望结果变平,无论如何这里是一个返回元组列表的解决方案:
def result = list.inject([]) {acc,a1->
list.each {a2->
if (!a1.is(a2) && a1.b == a2.c) {
acc << [a1,a2]
}
}
acc
}