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() ); }}