BeanComparator实现ArrayList复合排序

来源:互联网 发布:mac搜索不到蓝牙耳机 编辑:程序博客网 时间:2024/05/23 23:06
  1. package test;  
  2.   
  3. import java.util.Collections;  
  4. import java.util.Comparator;  
  5. import java.util.ArrayList;  
  6. import org.apache.commons.beanutils.BeanComparator;  
  7. import org.apache.commons.collections.ComparatorUtils;  
  8. import org.apache.commons.collections.comparators.ComparableComparator;  
  9. import org.apache.commons.collections.comparators.ComparatorChain;  
  10.   
  11. public class CompareTipA  {  
  12.     private int  id;  
  13.     private String  name;  
  14.     private String age;  
  15.   
  16.     public static void main(String []args) {  
  17.         ArrayList<Object> list = new ArrayList<Object>();  
  18.         list.add(new CompareTipA(1,"3","五"));  
  19.         list.add(new CompareTipA(1,"1","六"));  
  20.         list.add(new CompareTipA(1,"5","二"));  
  21.         list.add(new CompareTipA(1,"4","四"));  
  22.         list.add(new CompareTipA(4,"2","一"));  
  23.   
  24.         Comparator mycmp = ComparableComparator.getInstance();  
  25.         mycmp = ComparatorUtils.nullLowComparator(mycmp);  //允许null     
  26.         mycmp = ComparatorUtils.reversedComparator(mycmp); //逆序     
  27.           
  28.         ArrayList<Object> sortFields = new ArrayList<Object>();  
  29.         sortFields.add(new BeanComparator("id", mycmp));     //id逆序  (主)  
  30.         sortFields.add(new BeanComparator("name"));            //name正序 (副)  
  31.         //排序链  
  32.         ComparatorChain multiSort = new ComparatorChain(sortFields);  
  33.         Collections.sort(list,multiSort);  
  34.           
  35.         for (int i =0;i<list.size();i++) {  
  36.             System.out.println(list.get(i));    //输出  
  37.         }  
  38.     }  
  39.   
  40.     public CompareTipA(int id, String name,String age) {  
  41.         this.id = id;  
  42.         this.name = name;  
  43.         this.age = age;  
  44.     }  
  45.   
  46.     public int getId() {  
  47.         return this.id;  
  48.     }  
  49.   
  50.     public void setId(int id) {  
  51.         this.id = id;  
  52.     }  
  53.   
  54.     public String getName() {  
  55.         return this.name;  
  56.     }  
  57.   
  58.     public void setName(String name) {  
  59.         this.name = name;  
  60.     }  
  61.   
  62.     public String toString() {  
  63.         return "[id=" + this.id + ",name=" + this.name +",age=" + this.age +"]";  
  64.     }  
  65.   
  66.     public String getAge() {  
  67.         return age;  
  68.     }  
  69.   
  70.     public void setAge(String age) {  
  71.         this.age = age;  
  72.     }