java如何對ArrayList中對象按照該對象某屬性排序

有幾個方法可以實現:讓 Student 實現Comparable接口,或是實例化一個比較器,現在用 Comparator 比較器實例來做一個:ComparableTest.Java

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;


public class ComparableTest {
 public static void main(String[] args) {
    Comparator<Student> comparator = new Comparator<Student>(){
     public int compare(Student s1, Student s2) {
      //先排年齡
      if(s1.age!=s2.age){
       return s2.age-s1.age;
      }
      else{
       //年齡相同則按姓名排序
       if(!s1.name.equals(s2.name)){
        return s2.name.compareTo(s1.name);
       }
       else{
        //姓名也相同則按學號排序
        return s2.id-s1.id;
       }
      }
     }
    };
    Student stu1 = new Student (1,"zhangsan","male",28,"cs");
    Student stu2 = new Student (2,"lisi","female",19,"cs");
    Student stu3 = new Student (3,"wangwu","male",22,"cs");
    Student stu4 = new Student (4,"zhaoliu","female",17,"cs");
    Student stu5 = new Student (5,"jiaoming","male",22,"cs");

    ArrayList<Student> List = new ArrayList<Student>();
    List.add(stu1);
    List.add(stu2);
    List.add(stu3);
    List.add(stu4);
    List.add(stu5); 
    //這裏就會自動根據規則進行排序
    Collections.sort(List,comparator);
    display(List);
   }
   
   static void display(ArrayList<Student> lst){
    for(Student s:lst)
     System.out.println(s);
   }
  }

  class Student{
   int age;
   int id;
   String gender;
   String name;
   String cs;
   Student(int id,String name,String gender,int age,String cs){
    this.age=age;
    this.name=name;
    this.gender=gender;
    this.id=id;
    this.cs=cs;
   }
   public String toString(){
    return id+"  "+name+"  "+gender+"  "+age+"  "+cs;
   }
  }

2.添加 Comparable 接口,重寫 compareTo 方法。然後你可以用 TreeSet 結構進行排序。它會自動排序。


轉載來源 http://blog.csdn.net/xiancaifu/article/details/7420700

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章