实现比较方法的规则

像compareTo,必须是“反身,反对称和传递”,是否有任何规则来实现比较方法? 谢谢

来自Comparator API :

  1. 实现者必须确保所有x和y的sgn(compare(x,y))== -sgn(compare(y,x))。 (这意味着当且仅当compare(y,x)抛出exception时,compare(x,y)必须抛出exception。)
  2. 实现者还必须确保关系是传递的:((compare(x,y)> 0)&&(compare(y,z)> 0))表示compare(x,z)> 0。
  3. 最后,实现者必须确保compare(x,y)== 0意味着所有z的sgn(compare(x,z))== sgn(compare(y,z))。
  4. 通常情况是这样,但并非严格要求(compare(x,y)== 0)==(x.equals(y))。 一般来说,任何违反此条件的比较器都应清楚地表明这一事实。 推荐的语言是“注意:这个比较器强加了与equals不一致的排序。”