Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計(jì)

          留言簿(23)

          積分與排名

          優(yōu)秀學(xué)習(xí)網(wǎng)站

          友情連接

          閱讀排行榜

          評(píng)論排行榜

          BeanComparator實(shí)現(xiàn)ArrayList復(fù)合排序[轉(zhuǎn)]

          http://blog.csdn.net/ftlovexg/article/details/1583757

          研究了幾天,那時(shí)候就是認(rèn)為要繼承Comparable接口,重寫CompareTo方法,結(jié)果走向了歧路.后來就搜啊搜,發(fā)現(xiàn)了點(diǎn)東西.自己又總結(jié)了下.需要的JAR包:commons.collections.jar

          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 int compareTo(Object o) {
          //        return this.comparator.compare(this, o);
          //    }

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

           

          posted on 2011-11-10 10:45 都市淘沙者 閱讀(1009) 評(píng)論(0)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          主站蜘蛛池模板: 南宁市| 永济市| 南江县| 襄垣县| 阿勒泰市| 华宁县| 高邮市| 砚山县| 阿拉善左旗| 会昌县| 安福县| 祁门县| 吉首市| 潢川县| 威远县| 获嘉县| 绥宁县| 龙岩市| 于都县| 化隆| 永宁县| 康马县| 垫江县| 光山县| 兰坪| 安龙县| 义马市| 临猗县| 海丰县| 嘉定区| 苍梧县| 民和| 分宜县| 长宁县| 大余县| 邹城市| 黔西| 进贤县| 福安市| 江陵县| 丰都县|