Collections.sort()报Comparison method violates its general contract异常解决方法

Comparison method violates its general contract出现这种错误是因为我违反了排序规则,

排序规则:

1) 自反性:x,y 的比较结果和 y,x 的比较结果相反。

2) 传递性:x>y,y>z,则 x>z。

3) 对称性:x=y,则 x,z 比较结果和 y,z 比较结果相同

如图中所示,初看代码没毛病呀,这是逻辑呀。后来逐渐的试,才发现问题我的==不符合规则

Collections.sort()报Comparison method violates its general contract异常解决方法

结果为false,需要改成

Collections.sort()报Comparison method violates its general contract异常解决方法

Collections.sort()报Comparison method violates its general contract异常解决方法

所以在确定自己逻辑对的情况下,一定要检查下括号里面的比较是不是正确的。

 

相关文章: