對(duì)List元素中的多個(gè)屬性進(jìn)行排序

字號(hào):

commons-beanutils 類庫(kù)中有一個(gè) BeanComparator 類,可以用來給 JavaBean 排序。但是這個(gè)類一次只能對(duì)一個(gè)屬性排序。下面是一個(gè)利用 BeanComparator 實(shí)現(xiàn)對(duì) JavaBean 的多個(gè)屬性進(jìn)行排序的例子,非常簡(jiǎn)單:
    importorg.apache.commons.beanutils.BeanComparator;
    importjava.util.Collections;
    importjava.util.Comparator;
    importjava.util.List;
    /**
    *對(duì)List元素的多個(gè)屬性進(jìn)行排序的類
    */
    @SuppressWarnings({"unchecked"})
    publicclassListSorter{
    /**
    *List元素的多個(gè)屬性進(jìn)行排序。例如ListSorter.sort(list,"name","age"),則先按
    *name屬性排序,name相同的元素按age屬性排序。
    *
    *@paramlist 包含要排序元素的List
    *@paramproperties要排序的屬性。前面的值優(yōu)先級(jí)高。
    */
    publicstaticvoidsort(Listlist,finalString...properties){
    Collections.sort(list,newComparator(){
    publicintcompare(Vo1,Vo2){
    if(o1==null&&o2==null)return0;
    if(o1==null)return-1;
    if(o2==null)return1;
    for(Stringproperty:properties){
    Comparatorc=newBeanComparator(property);
    intresult=c.compare(o1,o2);
    if(result!=0){
    returnresult;
    }
    }
    return0;
    }
    });
    }
    }