java的list集合如何根据对象中的某个字段排序?

时间:2020-12-27 15:00:01

转自: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. }