比较没有相等定义的对象列表

时间:2018-04-17 18:47:23

标签: groovy collections

我有一个没有定义equal函数的类。我需要比较这两个对象的列表。我目前的解决方案有一些样本:

def fromRecords = [new FooRecord(['ABC', 123L]), new FooRecord(['XYZ', 789L])]
storage.write(fromRecords)
def toRecords = storage.read()

for (int i = 0; i < outRecords.size(); i++) {
 assert outRecords[i].contents == records[i].contents
}

是否有更优雅的常规方式来进行相同的比较?

1 个答案:

答案 0 :(得分:2)

您不需要循环,列表上的equals方法应该注意比较顺序和检查元素相等:

assert outRecords.contents == records.contents

==运算符将导致调用outRecords.contents.equals(records.contents),这将检查List相等(处理顺序和列表内容 - 逐个元素.equals检查)。