首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

BeanComparator兑现ArrayList复合排序

2012-12-19 
BeanComparator实现ArrayList复合排序ArrayList 中的bean实现客户化排序可以让bean实现java.util.Comparat

BeanComparator实现ArrayList复合排序
ArrayList 中的bean实现客户化排序可以让bean实现java.util.Comparator<Type>接口,下面介绍的是一种利用commons.collections.jar中的 BeanComparator 来实现ArrayList复合排序。

package test;import java.util.Collections;import java.util.Comparator;import java.util.ArrayList;import org.apache.commons.beanutils.BeanComparator;import org.apache.commons.collections.ComparatorUtils;import org.apache.commons.collections.comparators.ComparableComparator;import org.apache.commons.collections.comparators.ComparatorChain;public class CompareTipA  {    private int  id;    private String  name;    private String age;    public static void main(String []args) {        ArrayList<Object> list = new ArrayList<Object>();        list.add(new CompareTipA(1,"3","五"));        list.add(new CompareTipA(1,"1","六"));        list.add(new CompareTipA(1,"5","二"));        list.add(new CompareTipA(1,"4","四"));        list.add(new CompareTipA(4,"2","一"));        Comparator mycmp = ComparableComparator.getInstance();        mycmp = ComparatorUtils.nullLowComparator(mycmp);  //允许null           mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序                   ArrayList<Object> sortFields = new ArrayList<Object>();        sortFields.add(new BeanComparator("id", mycmp));     //id逆序  (主)        sortFields.add(new BeanComparator("name"));            //name正序 (副)        //排序链        ComparatorChain multiSort = new ComparatorChain(sortFields);        Collections.sort(list,multiSort);                for (int i =0;i<list.size();i++) {            System.out.println(list.get(i));    //输出        }    }    public CompareTipA(int id, String name,String age) {        this.id = id;        this.name = name;        this.age = age;    }    public int getId() {        return this.id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return this.name;    }    public void setName(String name) {        this.name = name;    }    public String toString() {        return "[id=" + this.id + ",name=" + this.name +",age=" + this.age +"]";    }    public String getAge() {        return age;    }    public void setAge(String age) {        this.age = age;    }} 
1 楼 tangyu477 2011-10-27   +1  非常感谢

热点排行