BeanComparator实现ArrayList复合排序

  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.     }  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值