Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rules to implement compare method

like compareTo, that have to be "reflexive, antisymmetric and transitive", are there any rules to implement the compare method?? thanks

like image 363
Peppe Avatar asked Feb 06 '13 15:02

Peppe


1 Answers

From Comparator API:

  1. The implementor must ensure that sgn(compare(x, y)) == -sgn(compare(y, x)) for all x and y. (This implies that compare(x, y) must throw an exception if and only if compare(y, x) throws an exception.)
  2. The implementor must also ensure that the relation is transitive: ((compare(x, y)>0) && (compare(y, z)>0)) implies compare(x, z)>0.
  3. Finally, the implementor must ensure that compare(x, y)==0 implies that sgn(compare(x, z))==sgn(compare(y, z)) for all z.
  4. It is generally the case, but not strictly required that (compare(x, y)==0) == (x.equals(y)). Generally speaking, any comparator that violates this condition should clearly indicate this fact. The recommended language is "Note: this comparator imposes orderings that are inconsistent with equals."
like image 174
PermGenError Avatar answered Oct 18 '22 16:10

PermGenError