比较器中的equals()vs compareTo()/能(理论)

Whi*_*cal 3 java collections equals comparable comparator

我不明白Javadoc:

The natural ordering for a class C is said to be consistent with equals if and only if
  (e1.compareTo((Object)e2) == 0) has the same boolean value as e1.equals((Object)e2) for
  every e1 and e2 of class C.
Run Code Online (Sandbox Code Playgroud)

为什么要那样?

我知道e1.equals(e2)= true应该始终意味着e1.compareTo(e2)== 0,但我无法理解为什么相反应该是真的.比较不平等!2个相等的对象应该与零进行比较,但是如果排序标准与它们的情况不相关,则2个不同的对象应该能够比较0.我的意思是,让不同的对象等于不正确,但不同的对象与0比较为什么不呢?

编辑:后来它表示强烈建议一致性,因为一些兼容性问题,因此问题

Jon*_*eet 7

Javadoc并没有说比较与equals不一致是错误的.它只是定义了与equals一致的比较术语.

当你选择它通常是很好的做一个对比与等号的,一致的,从而给A和B,A是除小于b,等于或大于-但它不具有以这样的.

主叫方可以得到非常疑惑的顺序是意外不是与equals一致-您记录这虽然重要.