TreeMap的自然顺序不一致

时间:2019-04-24 09:18:02

标签: java equals treemap compareto

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

1 个答案:

答案 0 :(得分:0)

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

声明Map接口依赖于equals()方法,声明TreeMap依赖于compareTo()。因此,这两种方法都相关且应一致,否则您将不能依赖结果。即使它可以在某些JVM版本/实现中工作,也可能会破坏其他版本。

从技术上讲,TreeMap使用compareTo()方法,因此您可能会放弃本身可以接受的compareTo(),只与equals()不兼容,但我肯定会赢不推荐!