`

用Java集合中的Collections.sort方法对list排序的两种方法

    博客分类:
  • JAVA
 
阅读更多
java List 排序 Collections.sort

 

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

代码:
Java代码
  1. /**
  2. * 根据order对User排序
  3. */  
  4. public class User implements Comparable<User>{   
  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<User> list = new ArrayList<User>();   
  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. }  
Java代码  收藏代码
  1. <span style="">/** 
  2. * 根据order对User排序 
  3. */  
  4. public class User implements Comparable<User>{  
  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. public class Test{  
  25.     public static void main(String[] args) {  
  26.          User user1 = new User();  
  27.          user1.setName("a"); user1.setOrder(1);   
  28.          User user2 = new User(); user2.setName("b");  
  29.          user2.setOrder(2);   
  30.          List<User> list = new ArrayList<User>();   
  31.         //此处add user2再add user1   
  32.         list.add(user2); list.add(user1);   
  33.         Collections.sort(list);   
  34.         for(User u : list){   
  35.             System.out.println(u.getName());   
  36.         }   
  37.     }   
  38. }  
  39.   
  40. </span>  

输出结果如下 


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

代码:
Java代码
  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<User> list = new ArrayList<User>();   
  33.         list.add(user2);   
  34.         list.add(user1);   
  35.         Collections.sort(list,new Comparator<User>(){   
  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.      }   
  44. }  
最简单的就是上面红色的字。。。。。。。。。。。

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

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

就成倒序的了。。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics