大龙的博客

常用链接

统计

最新评论

java List 排序 Collections.sort

java List 排序 Collections.sort

用Collections.sort方法对list排序有两种方法 
第一种是list中的对象实现Comparable接口,如下:

  1. /**
  2. * 根据order对User排序
  3. */  
  4. public class User implements Comparable{   
  5.     private String name;   
  6.     private Integer order;   
  7.     public String getName() {   
  8.         return name;   
  9.      }   
  10.     public void setName(String name) {   
  11.         this.name = name;   
  12.      }   
  13.     public Integer getOrder() {   
  14.         return order;   
  15.      }   
  16.     public void setOrder(Integer order) {   
  17.         this.order = order;   
  18.      }   
  19.     public int compareTo(User arg0) {   
  20.         return this.getOrder().compareTo(arg0.getOrder());   
  21.      }   
  22. }   
  23.   
  24.   
  25.   
  26. public class Test{   
  27.     public static void main(String[] args) {   
  28.           User user1 = new User();   
  29.           user1.setName(“a”); user1.setOrder(1);   
  30.           User user2 = new User(); user2.setName(“b”);   
  31.           user2.setOrder(2);   
  32.           List list = new ArrayList();   
  33.         //此处add user2再add user1   
  34.          list.add(user2); list.add(user1);   
  35.          Collections.sort(list);   
  36.         for(User u : list){   
  37.              System.out.println(u.getName());   
  38.          }   
  39.      }   
  40. }

    输出结果如下 


    第二种方法是根据Collections.sort重载方法来实现,例如:

    代码:

    1. /**
    2. * 根据order对User排序 */   
    3. public class User {   
    4. //此处无需实现Comparable接口   
    5.     private String name;   
    6.     private Integer order;   
    7.     public String getName() {   
    8.          return name;   
    9.      }   
    10.     public void setName(String name) {   
    11.         this.name = name;   
    12.      }   
    13.     public Integer getOrder() {   
    14.         return order;   
    15.      }   
    16.     public void setOrder(Integer order) {   
    17.        this.order = order;   
    18.      }   
    19. }   
    20.   
    21.   
    22.   
    23.   
    24. public class Test{   
    25.     public static void main(String[] args) {   
    26.         User user1 = new User();   
    27.         user1.setName(“a”);   
    28.         user1.setOrder(1);   
    29.         User user2 = new User();   
    30.         user2.setName(“b”);   
    31.         user2.setOrder(2);   
    32.         List list = new ArrayList();   
    33.         list.add(user2);   
    34.         list.add(user1);   
    35.         Collections.sort(list,new Comparator(){   
    36.            public int compare(User arg0, User arg1) {   
    37.                return arg0.getOrder().compareTo(arg1.getOrder());   
    38.             }   
    39.         });   
    40.        for(User u : list){   
    41.            System.out.println(u.getName());   
    42.         }   
    43.      }   

    最简单的就是上面红色的字。。。。。。。。。。。

    默认为升序,将。return arg0.getOrder().compareTo(arg1.getOrder());    改为:

    return arg1.getOrder().compareTo(arg0.getOrder());   

    就成降序的了。。




posted on 2011-07-21 23:35 大龙 阅读(802) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理