java 双等于 equals_java – 在Collection中对象具有不同的equals(物理等于和逻辑等于)的机制...

有没有像比较器那样的Equalator机制,所以我可以在复制列表中使用不同的等号?

编辑:我的目标是当前list1.equals(列表2),检查以区分如果浅表副本或也深副本的所有对象a.equals(b)和list1.identical(列表2),检查如果只是浅拷贝未经修改的列表

所有这些列表都来自同一型号.有些是自己的副本,因此它们保存指向同一对象的指针,而其他则是深层副本,因此层次结构完全被复制,因为它们具有内容更新,而不仅仅是结构.

我发现自己oftenly出不来list1.equals(列表2),但我需要一个机制来告诉如果两者合计副本(在相同的顺序相同的集合对象)或有时,如果逻辑副本(通过我自己的实现逻辑等于),所以名单将调用equals和对象应该实现超过a == b的东西.

我的问题是没有Equalator接口,如果我覆盖对象等于我松散了TOTAL EQUAL(a == 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(list2),因此它们使用默认等于(obj1 == obj2),这仅在包含的对象完全相同时才为真.

第一个操作对于检查列表(可能是模型中完全重新创建的对象的更新列表)是否仍等于旧列表非常有用.

第二个操作对于检查列表是否有用(它是旧版本数据模型的浅层副本),它不包含任何超越的更改,因为它是udpdated版本时在代码中移动它.

编辑:一个很好的例子是有一个Point(x,y)列表.我们应该能够知道两个列表是否相等,因为它们是完全相同的点集或相等,因为它们包含的点在逻辑方式上是相等的.如果我们可以将phyEqual和logEqual都实现为object,并且在任何对象中都有这两个方法,那么list.phyEqual(list2)或list1.logEqual(list2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值