实现比较方法的规则

时间:2013-02-06 15:24:12

标签: java compare rules comparator compareto

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

1 个答案:

答案 0 :(得分:12)

来自Comparator API

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