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


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

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

執行結果:

排序前:[20, 19, 21] 排序后:[19, 20, 21]

當然對象的屬性可以多個,比如按年齡升序,按成績降序等.


免責聲明!

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



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