Comparator in Java
Java does not allow a function to be passed as a function argument, but there is a way to get around this restriction by passing in an object that defines the desired function as a method (sometimes called a functor). A Comparator is a class of object that defines a method compare.
A comparison is basically a subtraction; the compare method returns an int that gives the sign of the subtraction (the value of the int does not matter). If cmp is a Comparator, cmp.compare(x, y) will be:
- | x < y |
0 | x = y |
+ | x > y |
A simple comparator can simply subtract properties of the objects:
public static void mySort( AnyType[] a, Comparator<? super AnyType> cmp) {...} class MyOrder implements Comparator<MyObject> { public int compare(MyObject x, MyObject y) { return ( x.property() - y.property() ); }}