集合類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]
當然對象的屬性可以多個,比如按年齡升序,按成績降序等.