zoukankan      html  css  js  c++  java
  • 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]

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

  • 相关阅读:
    Web框架
    Java并发编程:Callable、Future和FutureTask
    5分钟了解Mockito
    用IntelliJ IDEA创建Gradle项目简单入门
    QrenCode : linux命令行下生成二维码图片
    git 撤销commit
    curl网站开发指南
    H2数据库攻略
    Guice入门
    linux debian 时间设置中无法选择“自动设定时间和日期”
  • 原文地址:https://www.cnblogs.com/androidsj/p/6051592.html
Copyright © 2011-2022 走看看