最近项目中经常要对list进行复合排序;每一次排序需求都不一样,需要些特定的排序方法。而基于泛型的复合排序方法能很好的避免了代码的重复。
public class SortUtil {
@SuppressWarnings("unchecked")
public static <T> void sortEntityByFields(List<T> entities, String... params) {
Comparator<T> comparator = ComparableComparator.getInstance();
// reverses the order of the input comparator
// comparator = ComparatorUtils.reversedComparator(comparator);
// allows nulls, the null value greater than nonnull value
// comparator = ComparatorUtils.nullLowComparator(comparator);
List<BeanComparator> beanComparators = new ArrayList<BeanComparator>();
for (String param : params) {
beanComparators.add(new BeanComparator(param, comparator));
}
ComparatorChain comparatorChain = new ComparatorChain(beanComparators);
Collections.sort(entities, comparatorChain);
}
}