首页 > 代码库 > 定制对ArrayList的sort方法的自定义排序

定制对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;      

 }    });