I suspect the problem occurs when neither value is sponsored. That will return 1 whichever way you call it, i.e.
x1.compare(x2) == 1
x2.compare(x1) == 1
That's invalid.
I suggest you change this:
object1.getSponsored() && object2.getSponsored()
to
object1.getSponsored() == object2.getSponsored()
in both places. I would probably actually extract this out a method with this signature somewhere:
public static int compare(boolean x, boolean y)
and then call it like this:
public int compare(SRE object1, SRE object2) {
return BooleanHelper.compare(object1.getSponsored(), object2.getSponsored());
}
That will make the code clearer, IMO.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…