ReverseComparator

ソート順を逆にするためのComparator。
これもcommonsプロジェクトに似たようなクラスがある。
実際に使う機会はあまりない・・・

import java.util.Comparator;

public class ReverseComparator<T> implements Comparator<T> {

    private Comparator<T> c;

    public ReverseComparator() {}

    public ReverseComparator(Comparator<T> comparator) {
        c = comparator;
    }

    @Override
    public int compare(T o1, T o2) {
        if (c == null) {
            if (!(o1 instanceof Comparable)) {
                throw new ClassCastException();
            }
            return ((Comparable<T>) o1).compareTo(o2) * -1;
        }
        return c.compare(o1, o2) * -1;
    }

}