import java.util.Comparator; /** Compares two Integers by their intValue.
Morgan McGuire
morgan@cs.williams.edu
*/
public class IntegerComparator implements java.util.Comparatorsgn(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.)
The implementor must also ensure that the relation is transitive:
((compare(x, y)>0) && (compare(y, z)>0))
implies compare(x, z)>0
.
Finally, the implementer must ensure that compare(x, y)==0
implies
that sgn(compare(x, z))==sgn(compare(y, z))
for all z.
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."
*/
public int compare(Integer a, Integer b) {
if (a.intValue() > b.intValue()) {
// The first argument was bigger
return 1;
} else if (a.intValue() == b.intValue()) {
// Both arguments were the same
return 0;
} else {
// The second argument was bigger
return -1;
}
}
public boolean equals(Object obj) {
return this == obj;
}
}