是否可以创建一个TreeMap,其中键的自然顺序不一致(key1.equals(key2)= true,key1.compareTo(k3)= 1,key2.compareTo(key3)= -1) ? 如果我将compareTo更改为不会发生这种情况,但是会有key1.equals(key2)= false但key1.compareTo(key2)= 0的键会很好吗?
答案 0 :(得分:0)
当您在声明的约束之外使用TreeMap
时,您将获得无法预测的行为。
声明Map
接口依赖于equals()
方法,声明TreeMap
依赖于compareTo()
。因此,这两种方法都相关且应一致,否则您将不能依赖结果。即使它可以在某些JVM版本/实现中工作,也可能会破坏其他版本。
从技术上讲,TreeMap
使用compareTo()
方法,因此您可能会放弃本身可以接受的compareTo()
,只与equals()
不兼容,但我肯定会赢不推荐!