是否有任何Equalator机制比较像,所以我可以有coparing列出了不同等号?
编辑:我的目标是当前list1.equals(列表2),检查以区分如果浅表副本或也深副本的所有对象a.equals(b)和list1.identical(列表2),检查如果只是浅拷贝与未改性上市
所有这些名单是从相同的模型。 有些是自己的副本,因此其所持有的指针指向相同的对象,和其他人都深副本,这样层次是完全复制的,因为他们有内容更新,而不只是在结构上。
我发现自己oftenly出不来list1.equals(列表2),但我需要一个机制来告诉如果两者合计副本(在相同的顺序相同的集合对象)或有时,如果逻辑副本(通过我自己的实现逻辑等于),所以名单会叫平等和对象应该实现的东西比一个== b以下。
我的问题是有没有Equalator接口,如果我重写对象等于我失去由总体上相等(一== b)比较的能力
例如,这将是很好的;
Collections.equal(l1,l2,new Equalator(){
@Override public boolean equals(Obj1,Obj2){
//Default lists comparison plus commparison of objects based on
return (obj1.propertyX() == obj2.propertyX());
}
});
和我还是可以做list1.equals(列表2),因此他们使用默认的equals(OBJ1 == obj2的),如果包含的对象是完全一样的,这将是唯一的真实。
首先操作是检查是否列表(这可能是一个更新的清单,从模型完全重新创建对象)还是等于旧列表非常有用。
第二个操作是检查是否列表(这是数据模型的旧当前版本的浅拷贝),它不会从代码中四处移动它时,它是udpdated版本包含任何超越的变化是有用的。
编辑:一个很好的例子将是具有点的名单(X,Y)。 我们应该能够知道,因为它们包含的点是一个合乎逻辑的方式等于两个列表是相等的,因为它们是完全一样的点集或等于。 如果我们能够实现这两个phyEqual和logEqual反对,并在任何物体两种方法使list.phyEqual(列表2)或list1.logEqual(列表2)