List集合中的對象根據屬性排序

集合類List存放的數據,默認是按照放入時的順序存放的,好比依次放入A、B、C,則取得時候,則也是A、B、C的順序,實際場景中,有時咱們須要根據自定義的規則對List中的元素進行排序,該如何實現呢?看下面小例子:html

 

[html] view plain copyjava

在CODE上查看代碼片派生到個人代碼片

  1. package test.tool.gui.dbtool.util;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Collections;  
  5. import java.util.Comparator;  
  6. import java.util.List;  
  7.   
  8. public class Test {  
  9.   
  10.     public static void main(String[] args) {  
  11.           
  12.         List<Student> list = new ArrayList<Student>();  
  13.           
  14.         //建立3個學生對象,年齡分別是20、1九、21,並將他們依次放入List中  
  15.         Student s1 = new Student();  
  16.         s1.setAge(20);  
  17.         Student s2 = new Student();  
  18.         s2.setAge(19);  
  19.         Student s3 = new Student();  
  20.         s3.setAge(21);  
  21.         list.add(s1);  
  22.         list.add(s2);  
  23.         list.add(s3);  
  24.           
  25.         System.out.println("排序前:"+list);  
  26.           
  27.         Collections.sort(list, new Comparator<Student>(){  
  28.   
  29.             /*  
  30.              * int compare(Student o1, Student o2) 返回一個基本類型的整型,  
  31.              * 返回負數表示:o1 小於o2,  
  32.              * 返回0 表示:o1和o2相等,  
  33.              * 返回正數表示:o1大於o2。  
  34.              */  
  35.             public int compare(Student o1, Student o2) {  
  36.               
  37.                 //按照學生的年齡進行升序排列  
  38.                 if(o1.getAge() > o2.getAge()){  
  39.                     return 1;  
  40.                 }  
  41.                 if(o1.getAge() == o2.getAge()){  
  42.                     return 0;  
  43.                 }  
  44.                 return -1;  
  45.             }  
  46.         });   
  47.         System.out.println("排序後:"+list);  
  48.     }  
  49. }  
  50. class Student{  
  51.       
  52.     private int age;  
  53.   
  54.     public int getAge() {  
  55.         return age;  
  56.     }  
  57.   
  58.     public void setAge(int age) {  
  59.         this.age = age;  
  60.     }  
  61.     @Override  
  62.     public String toString() {  
  63.         return getAge()+"";  
  64.     }  
  65. }  


執行結果:app

 

 

[html] view plain copyide

在CODE上查看代碼片派生到個人代碼片

  1. 排序前:[20, 19, 21]  
  2. 排序後:[19, 20, 21]  


固然對象的屬性能夠多個,好比按年齡升序,按成績降序等 .ui

相關文章
相關標籤/搜索