gpt4 book ai didi

java - 如何实现 Comparable 使其与身份平等一致

转载 作者:太空狗 更新时间:2023-10-29 22:31:22 24 4
gpt4 key购买 nike

我有一个类,它的相等性(根据 equals())必须由对象标识定义,即 this == other.

我想实现 Comparable 来排序这些对象(比如通过一些 getName() 属性)。为了与 equals() 保持一致,compareTo() 不得返回 0,即使两个对象具有相同的名称也是如此。

有没有办法在 compareTo 的意义上比较对象身份?我可以比较 System.identityHashCode(o),但在哈希冲突的情况下仍会返回 0

最佳答案

我认为真正的答案是:那时候不要实现 Comparable。实现此接口(interface)意味着您的对象具有自然顺序。当您跟进那个想法时,“相等”的东西应该在同一个地方。

如果有的话,您应该使用自定义比较器……但即便如此也没有多大意义。如果定义 a < b ... 的东西不允许给你 a == b(当 a 和 b 根据你的 < 关系“相等”时),那么比较的整个方法对于您的用例已损坏。

换句话说:仅仅因为您可以将代码放入一个“以某种方式”产生您想要的结果的类中……并不意味着这样做是一个的主意。

关于java - 如何实现 Comparable 使其与身份平等一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55450569/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com