java - Order Objects Compare -
this object:
public class trackuserchanges{ private long id; private long previous; }
i have arraylist. want sort objects this: - if getprevious() 1 object equal getid object, put first object 1 value on getid().
i have compareto method in class , don't want break that. created method :
public int comparetrack(trackuserchanges o){ if(this.getprevious().equals((o.getid()))){ return -1; } ??return this.getprevious().compareto(o.getid()); }
it's not good. ideas?
example: id,previous
trackuserchanges t = new trackuserchanges ( 2,1) trackuserchanges t1 = new trackuserchanges ( 3,1) trackuserchanges t2 = new trackuserchanges ( 1,1)
in case t.getprevious() = t2.getid() want order : t2,t,t1
what going not idea.
please read contract compareto()
:
the implementor must ensure sgn(compare(x, y)) == -sgn(compare(y, x)) x , y. (this implies compare(x, y) must throw exception if , if compare(y, x) throws exception.)
the implementor must ensure relation transitive: ((compare(x, y)>0) && (compare(y, z)>0)) implies compare(x, z)>0.
finally, implementor must ensure compare(x, y)==0 implies sgn(compare(x, z))==sgn(compare(y, z)) z.
if have a(1,2)
, b(2,1)
, not going reflexive: both a.compareto(b)
, b.compareto(a)
returning same sign, violate first rule.
you haven't thought of how handle comparation between a(1,2)
, b(3,4)
. doubt if can make transitive , reflexive.
tell why need , there better choices.
Comments
Post a Comment