定制對ArrayList的sort方法的自定義排序


java中的ArrayList需要通過collections類的sort方法來進行排序

如果想自定義排序方式則需要有類來實現Comparator接口並重寫compare方法

調用sort方法時將ArrayList對象與實現Commparator接口的類的對象作為參數

 

示例:

// 外部類的方式

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

import java.util.Comparator; import java.util.List;

public class Test {  public static void main(String[] args) {

  Student zlj = new Student("丁曉宇", 21);   

Student dxy = new Student("趙四", 22);   

Student cjc = new Student("張三", 11);   

Student lgc = new Student("劉武", 19);

  List<Student> studentList = new ArrayList<Student>();   

  studentList.add(zlj);   

 studentList.add(dxy);  

 studentList.add(cjc);  

 studentList.add(lgc);

  Collections.sort(studentList, new SortByAge());

  for (Student student : studentList) {   

 System.out.println(student.getName() + " / " + student.getAge());   

}  

 System.out.println("  =  ");  

 Collections.sort(studentList, new SortByName());  

 for (Student student : studentList) {    

System.out.println(student.getName() + " / " + student.getAge());   

}  } }

class SortByAge implements Comparator {  

public int compare(Object o1, Object o2) {  

 Student s1 = (Student) o1;   Student s2 = (Student) o2;  

 if (s1.getAge() > s2.getAge())    return 1;   return 0;  } }

 

class SortByName implements Comparator {  

public int compare(Object o1, Object o2) {   

Student s1 = (Student) o1;  

 Student s2 = (Student) o2;  

 return s1.getName().compareTo(s2.getName());  } }

 

 

//匿名內部類的方式

//按照受益人級別進行排序   

Collections.sort(beneficiarys,new Comparator(){

   @Override   

 public int compare(Object o1, Object o2) {    

 Beneficiary s1 = (Beneficiary) o1;     

Beneficiary s2 = (Beneficiary) o2;     

if (Integer.parseInt(s1.getBeneficiaryOrder()) > Integer.parseInt(s2.getBeneficiaryOrder()))     

 return 1;     

return 0;      

 }    });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM