zoukankan      html  css  js  c++  java
  • java List 排序 Collections.sort()

    用Collections.sort方法对list排序有两种方法

     第一种是list中的对象实现Comparable接口,如下:

    [java] view plain copy
     
    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. public class Test{  
    24.   
    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.          //此处add user2再add user1  
    34.         list.add(user2);  
    35.          list.add(user1);  
    36.          Collections.sort(list);  
    37.          for(User u : list){  
    38.              System.out.println(u.getName());  
    39.          }  
    40.      }  
    41.  }   




    输出结果如下
    a
     b

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

    [java] view plain copy
     
    1. /** 
    2.  * 根据order对User排序 
    3. */  
    4. public class User { //此处无需实现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.  主类中这样写即可(HastSet——>List——>sort进行排序):  
    22. public class Test {  
    23.     public static void main(String[] args) {  
    24.         User user1 = new User();  
    25.         user1.setName("a");  
    26.         user1.setPrice(11);  
    27.         User user2 = new User();  
    28.         user2.setName("b");  
    29.         user2.setPrice(2);  
    30.   
    31.         Set<User> Hset = new HashSet<User>();  
    32.         Hset.add(user2);  
    33.         Hset.add(user1);  
    34.   
    35.         List<User> list = new ArrayList<User>();  
    36.         list.addAll(Hset);  
    37.   
    38.   
    39.         Collections.sort(list,new Comparator<User>(){  
    40.             public int compare(User arg0, User arg1) {  
    41.                 return arg0.getPrice().compareTo(arg1.getPrice());  
    42.             }  
    43.         });  
    44.         for(User u : list){  
    45.             System.out.println(u.getName());  
    46.         }  
    47.     }  



    输出结果如下:

    a
    b

     

    默认为升序,将。return arg0.getOrder().compareTo(arg1.getOrder());    改为:
    return arg1.getOrder().compareTo(arg0.getOrder());   
    就成降序的了。

  • 相关阅读:
    sqlhelper使用指南
    大三学长带我学习JAVA。作业1. 第1讲.Java.SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行 大三学长带我学习JAVA。作业1.
    pku1201 Intervals
    hdu 1364 king
    pku 3268 Silver Cow Party
    pku 3169 Layout
    hdu 2680 Choose the best route
    hdu 2983
    pku 1716 Integer Intervals
    pku 2387 Til the Cows Come Home
  • 原文地址:https://www.cnblogs.com/yhtboke/p/5729981.html
Copyright © 2011-2022 走看看