List集合中的物件根據屬性排序
阿新 • • 發佈:2019-01-27
集合類List存放的資料,預設是按照放入時的順序存放的,比如依次放入A、B、C,則取得時候,則也是A、B、C的順序,實際場景中,有時我們需要根據自定義的規則對List中的元素進行排序,該如何實現呢?看下面小例子:
package test.tool.gui.dbtool.util; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List<Student> list = new ArrayList<Student>(); //建立3個學生物件,年齡分別是20、19、21,並將他們依次放入List中 Student s1 = new Student(); s1.setAge(20); Student s2 = new Student(); s2.setAge(19); Student s3 = new Student(); s3.setAge(21); list.add(s1); list.add(s2); list.add(s3); System.out.println("排序前:"+list); Collections.sort(list, new Comparator<Student>(){ /* * int compare(Student o1, Student o2) 返回一個基本型別的整型, * 返回負數表示:o1 小於o2, * 返回0 表示:o1和o2相等, * 返回正數表示:o1大於o2。 */ public int compare(Student o1, Student o2) { //按照學生的年齡進行升序排列 if(o1.getAge() > o2.getAge()){ return 1; } if(o1.getAge() == o2.getAge()){ return 0; } return -1; } }); System.out.println("排序後:"+list); } } class Student{ private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return getAge()+""; } }
執行結果:
排序前:[20, 19, 21]
排序後:[19, 20, 21]
當然物件的屬性可以多個,比如按年齡升序,按成績降序等