【问题标题】:Unconsistent natural ordering for TreeMapTreeMap 的自然排序不一致
【发布时间】:2019-04-24 09:18:01
【问题描述】:

是否可以创建一个键的自然顺序不一致的 TreeMap(key1.equals(key2) = true, key1.compareTo(k3) = 1, key2.compareTo(key3) = -1) ? 如果我将更改 compareTo 以便不会发生这种情况,但是会有 key1.equals(key2) = false 但 key1.compareTo(key2)=0 的键会好吗?

【问题讨论】:

  • 错误地实现compareTo方法

标签: java equals treemap compareto


【解决方案1】:

您将在其声明的约束之外使用TreeMap,因此您会遇到不可预知的行为。

Map 接口被声明为依赖equals() 方法,TreeMap 被声明为依赖compareTo()。所以这两种方法都是相关的,应该是一致的,否则你不能依赖结果。即使它在某些 JVM 版本/实现中有效,它也可能会在不同的版本/实现中中断。

从技术上讲,TreeMap 使用compareTo() 方法,因此您可能会使用compareTo(),它本身没问题,只是与equals() 不兼容,但我肯定不会推荐!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多