TreeMap 的自然排序不一致

Unconsistent natural ordering for TreeMap

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

当您在其声明的约束之外使用 TreeMap 时,您将获得不可预测的行为。

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

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