The compare function simply models a “less than” operator. Consider how the <
operator works for primitive types like int
:
int a = 1, b = 2; a < b == true a is less than b
int a = 2, b = 1; a < b == false a is not less than b, because a is greater than b
int a = 1, b = 1; a < b == false a is not less than b, because a equals b
Returning true
means you want a
to be ordered before b
. So return false
if that is not the case, either because you want b
to be ordered before a
, or because their order doesn’t matter.
If you return true
when the arguments are equal, then you are saying that you want a
to come before b
and you want b
to come before a
, which is a contradiction.