public class Sorter {
public interface Comparer {
/** Returns <0 if x < y, etc. */
int compare(Object x, Object y);
}
public static void sort(Object keys[], Comparer c) {...}
public static void sort(Object keys[], Comparer c,
Object values[]) {...}
public static void sort(String keys[], Object values[])
{ sort(keys, stringComparer, values); }
public static class StringComparer implements Comparer {
public int compare(Object x, Object y) {
if (x == null) return (y == null) ? 0 : -1; if (y == null) return 1;
return x.toString().compareTo(y.toString()); }
}
public static final Comparer stringComparer
= new StringComparer();
public static class LongComparer implements Comparer {
... long lx = ((Number)x).longValue(); ...
}
public static final Comparer longComparer
= new LongComparer();
/** Compose 2 comparisons, presumably on distinct sub-keys. */
public static class CombinedComparer implements Comparer {...}
public static Comparer combine(Comparer c1, Comparer c2) {...}
...
}
|