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()
不兼容,但我肯定不会推荐!
是否可以创建一个键的自然顺序不一致的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()
不兼容,但我肯定不会推荐!