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