zoukankan      html  css  js  c++  java
  • java的list集合如何根据对象中的某个字段排序?

    转自:http://blog.csdn.net/wangjuan_01/article/details/51351633

    List集合按某个字段排序

    1. package wjtest_01;  
    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 ListSort<E> {  
    9.     @SuppressWarnings("unchecked")  
    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.         s1.setUsable(true);  
    18.         Student s2 = new Student();  
    19.         s2.setAge(19);  
    20.         s2.setUsable(true);  
    21.         Student s3 = new Student();  
    22.         s3.setAge(21);  
    23.         s3.setUsable(false);  
    24.         list.add(s1);  
    25.         list.add(s2);  
    26.         list.add(s3);  
    27.   
    28.         System.out.println("排序前:" + list);  
    29.         Collections.sort(list, new Comparator<Student>() {  
    30.   
    31.             @Override  
    32.             public int compare(Student o1, Student o2) {  
    33.                 // 按照学生的年龄进行升序排列  
    34.                 if (o1.getAge() > o2.getAge()) {  
    35.                     return 1;  
    36.                 }  
    37.                 if (o1.getAge() == o2.getAge()) {  
    38.                     return 0;  
    39.                 }  
    40.                 return -1;  
    41.             }  
    42.         });  
    43.   
    44.         System.out.println("升序排序后:" + list);  
    45.   
    46.         Collections.sort(list, new Comparator<Student>() {  
    47.   
    48.             public int compare(Student o1, Student o2) {  
    49.   
    50.                 // 按照学生的年龄进行降序排列  
    51.                 if (o1.getAge() > o2.getAge()) {  
    52.                     return -1;  
    53.                 }  
    54.                 if (o1.getAge() == o2.getAge()) {  
    55.                     return 0;  
    56.                 }  
    57.                 return 1;  
    58.             }  
    59.         });  
    60.   
    61.         System.out.println("降序排序后:" + list);  
    62.   
    63.         Boolean b1 = true; // 创建Boolean对象1  
    64.   
    65.         Boolean b2 = false; // 创建Boolean对象0  
    66.   
    67.         Boolean b3 = true; // 创建Boolean对象1  
    68.         System.out.println(b1);  
    69.   
    70.         int i;  
    71.   
    72.         i = b1.compareTo(b2); // b1和b2进行比较    
    73.   
    74.         System.out.println(i);//1-0   
    75.   
    76.         i = b2.compareTo(b1); // b2和b1进行比较  
    77.   
    78.         System.out.println(i);//0-1  
    79.   
    80.         i = b1.compareTo(b3); // b1和b3进行比较  
    81.   
    82.         System.out.println(i);//1-1  
    83.     }  
    84. }  
    85.   
    86. class Student{    
    87.       
    88.     private int age;  
    89.       
    90.     private Boolean isUsable;  
    91.   
    92.     public int getAge() {    
    93.         return age;    
    94.     }    
    95.     
    96.     public Boolean isUsable() {  
    97.         return isUsable;  
    98.     }  
    99.   
    100.     public void setUsable(Boolean isUsable) {  
    101.         this.isUsable = isUsable;  
    102.     }  
    103.   
    104.     public void setAge(int age) {    
    105.         this.age = age;    
    106.     }    
    107.     @Override    
    108.     public String toString() {    
    109.         return getAge()+"";    
    110.     }    
    111. }  
  • 相关阅读:
    LOJ#3212. 「CSP-S 2019」划分
    矩阵乘法
    SSF信息社团4月训练题目整理
    AtCoder Regular Contest 116
    SSF信息社团3月训练题目整理
    Codeforces Round #704 (Div. 2)
    SSF信息社团寒假训练题目整理(三)
    关于 zzt 得 0.8 分这件事
    Luogu P7244 章节划分
    SSF信息社团寒假训练题目整理(二)
  • 原文地址:https://www.cnblogs.com/YuyuanNo1/p/8038132.html
Copyright © 2011-2022 走看看