Java實現對List中的對象按某個字段進行排序


聲明
1)該文章整理自網上的大牛和專家無私奉獻的資料,具體引用的資料請看參考文獻。
2)本文僅供學術交流,非商用。如果某部分不小心侵犯了大家的利益,還望海涵,並聯系博主刪除。
3)博主才疏學淺,文中如有不當之處,請各位指出,共同進步,謝謝。
4)此屬於第一版本,若有錯誤,還需繼續修正與增刪。還望大家多多指點。大家都共享一點點,一起為祖國科研的推進添磚加瓦。

  1 public class Logs implements Serializable, Comparable<Logs> {
  2  
  3     private String id;
  4     private String username;
  5     private String contents;
  6     private String consequence;
  7     private String ip;
  8     private Long times;
  9  
 10     @Override
 11     public int compareTo(Logs o) {
 12         return 0;
 13     }
 14  
 15 }
 16 解析: Logs實體,要繼承Comparable<T>接口, 然后再實現一個public int compareTo(Logs o) 方法.
 17 
 18 現在,我要對List<Logs> 中的數據按 times 字段進行排序
 19 
 20 
 21     @Test
 22     public void testMath(){
 23         List<Logs> list = new ArrayList<Logs>();
 24         list.add(new Logs("1","chen", "djifand", "jdifa", "jdfid", 49L));
 25         list.add(new Logs("134","ce", "cae", "jdifa", "jdfid", 123L));
 26         list.add(new Logs("3","cet", "djifand", "jdifa", "jdfid", 99L));
 27         list.add(new Logs("4","egge", "djifand", "jdifa", "jdfid", 111L));
 28         list.add(new Logs("15","chen", "djifand", "jdifa", "jdfid", 59L));
 29         list.add(new Logs("6","chen2", "cae", "jdifa", "jdfid", 123L));
 30         list.add(new Logs("87","cet", "djifand", "jdifa", "jdfid", 213L));
 31         list.add(new Logs("8","egge", "djifand", "jdifa", "jdfid", 201L));
 32         list.add(new Logs("9","egge2", "djifand", "jdifa", "jdfid", 269L));
 33         list.add(new Logs("10","ce", "cae", "jdifa", "jdfid", 121L));
 34         list.add(new Logs("11","chen3", "djifand", "jdifa", "jdfid", 1123L));
 35         list.add(new Logs("5","cet2", "djifand", "jdifa", "jdfid", 12L));
 36  
 37         System.out.println("---- 排序前的輸出  ----- ");
 38         for (Logs logs : list) {
 39             System.out.println("數據: "+logs);
 40         }
 41         System.out.println("---- 排序后的結果  ----- ");
 42         List<Logs> search = search(list);
 43  
 44         for (Logs logs : search) {
 45             System.out.println("-->"+logs);
 46         }
 47  
 48     }
 49  
 50  
 51      // 方式1: 降序排列
 52      public List<Logs> search(List<Logs> logsList){
 53         Collections.sort(logsList, new Comparator<Logs>() {
 54             @Override
 55             public int compare(Logs o1, Logs o2) {
 56                 if ((o1.getTimes() > o2.getTimes())){
 57                     return -1;
 58                 }
 59                 if (o1.getTimes() == o2.getTimes()){
 60                     return 0;
 61                 }
 62                 return 1;
 63             }
 64         });
 65         return logsList;
 66     }
 67  
 68      // 方式2: 升序排列
 69      public List<Logs> search(List<Logs> logsList){
 70         Collections.sort(logsList, new Comparator<Logs>() {
 71             @Override
 72             public int compare(Logs o1, Logs o2) {
 73                 if ((o1.getTimes() > o2.getTimes())){
 74                     return 1;
 75                 }
 76                 if (o1.getTimes() == o2.getTimes()){
 77                     return 0;
 78                 }
 79                 return -1;
 80             }
 81         });
 82         return logsList;
 83     }
 84     // 方式3: 降序排列 
 85     public List<Logs> search(List<Logs> logsList){
 86         Collections.sort(logsList, new Comparator<Logs>() {
 87             @Override
 88             public int compare(Logs o1, Logs o2) {
 89                 return -o1.getTimes().compareTo(o2.getTimes());
 90             }
 91         });
 92         return logsList;
 93     }
 94  
 95     // 方式4: 升序排列
 96     public List<Logs> search(List<Logs> logsList){
 97         Collections.sort(logsList, new Comparator<Logs>() {
 98             @Override
 99             public int compare(Logs o1, Logs o2) {
100                 return o1.getTimes().compareTo(o2.getTimes());
101             }
102         });
103         return logsList;
104     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM