用于多列排序的Java比较器?

Dan*_*lor 8 java sorting javabeans comparator

是否有任何Java开源比较器用于比较多个字段的bean以进行多列排序?每列可以按升序或降序排序.

对于单柱分选,可以通过org.apache.commons.beanutils.BeanComparator与其一起使用来实现org.springframework.util.comparator.InvertibleComparator.

我知道这个功能写起来非常简单,但如果它已经编写并经过测试,重新发明轮子的好处是什么?

Sim*_*mon 7

我几个月前写过这篇文章.

public abstract class ChainedComparator<T> implements Comparator<T> {

    private Comparator<T> next;

    @Override
    public int compare(T o1, T o2) {
        int result = doCompare(o1, o2);
        if (result == 0) {
            if (getNext() != null) {
                return getNext().compare(o1, o2);
            }
        }

        return result;
    }

    public abstract int doCompare(T o1, T o2);

    public Comparator<T> getNext() {
        return next;
    }

    public void setNext(Comparator<T> next) {
        this.next = next;
    }
}
Run Code Online (Sandbox Code Playgroud)

只需继承此类并覆盖doCompare-Method.然后在链中设置下一个比较器setNext().比较器越早出现在这个链中,它就越"重要".

编辑:

另请参阅我发现的内容:http://commons.apache.org/collections/api-2.1.1/org/apache/commons/collections/comparators/ComparatorChain.html

这是apache commons集合库的一部分,您可以在此处下载