import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
public class CompositeComparator<T> implements Comparator<T> {
private final List<Comparator<T>> comparatorList = new LinkedList<Comparator<T>>();
public List<Comparator<T>> getComparatorList() {
return comparatorList;
}
public void addComparator(Comparator<T> comparator) {
if (comparator == null) {
return;
}
comparatorList.add(comparator);
}
public void addComparators(Comparator<T>[] comparators) {
if (comparators == null) {
return;
}
for (int i = 0; i < comparators.length; i++) {
comparatorList.add(comparators[i]);
}
}
@Override
public int compare(T o1, T o2) {
for (Comparator<T> comparator : comparatorList) {
int result = comparator.compare(o1, o2);
if (result != 0) {
return result;
}
}
return 0;
}
}