打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
List集合中的对象根据属性排序

集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看下面小例子:

  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、19、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. }  

执行结果:

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

当然对象的属性可以多个,比如按年龄升序,按成绩降序等


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
java的list集合如何根据对象中的某个字段排序?
泛型与反射
java clone - ttitfly的笔记 - JavaEye技术网站
Java程序内存的简单分析
封装
java.lang.Object.clone()分析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服