Ordinary hut

          人間一福地,勝似天仙宮
          posts - 61, comments - 50, trackbacks - 0, articles - 1

          java中Collections.sort() 排序函數(shù)的用法

          Posted on 2009-04-07 16:40 landor 閱讀(164697) 評(píng)論(7)  編輯  收藏 所屬分類: java
          用Collections.sort方法對(duì)list排序有兩種方法
          第一種是list中的對(duì)象實(shí)現(xiàn)Comparable接口,如下:
          /**
          * 根據(jù)order對(duì)User排序
          */
          public class User implements Comparable<User>{
              
          private String name;
              
          private Integer order;
              
          public String getName() {
                  
          return name;
              }
              
          public void setName(String name) {
                  
          this.name = name;
              }
              
          public Integer getOrder() {
                  
          return order;
              }
              
          public void setOrder(Integer order) {
                  
          this.order = order;
              }
              
          public int compareTo(User arg0) {
                  
          return this.getOrder().compareTo(arg0.getOrder());
              }
          }
          測(cè)試一下:
          public class Test{

              
          public static void main(String[] args) {
                  User user1 
          = new User();
                  user1.setName(
          "a");
                  user1.setOrder(
          1);
                  User user2 
          = new User();
                  user2.setName(
          "b");
                  user2.setOrder(
          2);
                  List
          <User> list = new ArrayList<User>();
                  
          //此處add user2再add user1
                  list.add(user2);
                  list.add(user1);
                  Collections.sort(list);
                  
          for(User u : list){
                      System.out.println(u.getName());
                  }
              }
          }
          輸出結(jié)果如下
          a
          b

          第二種方法是根據(jù)Collections.sort重載方法來(lái)實(shí)現(xiàn),例如:
          /**
          * 根據(jù)order對(duì)User排序
          */
          public class User { //此處無(wú)需實(shí)現(xiàn)Comparable接口
              private String name;
              
          private Integer order;
              
          public String getName() {
                  
          return name;
              }
              
          public void setName(String name) {
                  
          this.name = name;
              }
              
          public Integer getOrder() {
                  
          return order;
              }
              
          public void setOrder(Integer order) {
                  
          this.order = order;
              }
          }

          主類中這樣寫(xiě)即可:
          public class Test{
              
          public static void main(String[] args) {
                  User user1 
          = new User();
                  user1.setName(
          "a");
                  user1.setOrder(
          1);
                  User user2 
          = new User();
                  user2.setName(
          "b");
                  user2.setOrder(
          2);
                  List
          <User> list = new ArrayList<User>();
                  list.add(user2);
                  list.add(user1);
                 
                  Collections.sort(list,
          new Comparator<User>(){
                      
          public int compare(User arg0, User arg1) {
                          
          return arg0.getOrder().compareTo(arg1.getOrder());
                      }
                  });
                  
          for(User u : list){
                      System.out.println(u.getName());
                  }
              }
          }
          輸出結(jié)果如下
          a
          b

          前者代碼結(jié)構(gòu)簡(jiǎn)單,但是只能根據(jù)固定的屬性排序,后者靈活,可以臨時(shí)指定排序項(xiàng),但是代碼不夠簡(jiǎn)潔

          擇優(yōu)用之。

          Feedback

          # re: java中Collections.sort()函數(shù)的用法  回復(fù)  更多評(píng)論   

          2009-04-07 16:44 by 沙鑫
          不錯(cuò)啊`~~學(xué)習(xí)

          # re: java中Collections.sort()函數(shù)的用法  回復(fù)  更多評(píng)論   

          2010-02-02 13:22 by gongmingwind
          Collections這個(gè)工具類,很強(qiáng)大,寫(xiě)的不錯(cuò),支持你

          # re: java中Collections.sort() 排序函數(shù)的用法[未登錄](méi)  回復(fù)  更多評(píng)論   

          2010-05-21 14:47 by w
          搞個(gè)可構(gòu)造方法就方便看

          # re: java中Collections.sort() 排序函數(shù)的用法[未登錄](méi)  回復(fù)  更多評(píng)論   

          2014-12-03 14:56 by conjs
          簡(jiǎn)之。。。
          List<User> list = Lists.newArrayList(new User(1,"a"),new User(2,"b"));
          Collections.sort(list,(User a,User b)->(a.getOrder().compareTo(b.getOrder()));
          print(list);

          # re: java中排序函數(shù)的用法  回復(fù)  更多評(píng)論   

          2016-03-21 15:53 by Collections.sort()
          分Collections.sort()

          # re: java中Collections.sort() 排序函數(shù)的用法  回復(fù)  更多評(píng)論   

          2016-04-01 15:18 by 任起東
          接口可以被實(shí)例化????

          # re: java中Collections.sort() 排序函數(shù)的用法[未登錄](méi)  回復(fù)  更多評(píng)論   

          2016-07-13 19:55 by ff
          @任起東 實(shí)際上是java生成了一個(gè)類出來(lái)。
          主站蜘蛛池模板: 平江县| 桑日县| 马山县| 芒康县| 闽侯县| 五寨县| 登封市| 廊坊市| 金堂县| 珠海市| 英超| 东莞市| 阳山县| 黄平县| 泸水县| 望谟县| 京山县| 丰顺县| 遂平县| 商都县| 平泉县| 安塞县| 孟州市| 永清县| 泸西县| 孟津县| 台东市| 苍山县| 陵川县| 古丈县| 介休市| 湖南省| 乌拉特后旗| 黄大仙区| 南康市| 文化| 阿巴嘎旗| 清丰县| 宾阳县| 临澧县| 上蔡县|