1. 程式人生 > >對ArrayList中的元素按照某一列進行排序

對ArrayList中的元素按照某一列進行排序

對ArrayList中的元素進行排序,主要考查的是對util包中的Comparator介面和Collections類的使用。

實現Comparator介面必須實現compare方法,自己可以去看API幫助文件。

建立一個Comparator例項後,用Collections.sort(List,<E>)對List中的元素進行排序。

下面是實現程式碼:

以下檔案必須引入util包:

package com.test;

import java.util.*;

Emp.java檔案如下:

Java程式碼  收藏程式碼
  1. class Emp{  
  2. private String empNo ;  
  3. private String empName ;  
  4. private float sal ;  
  5. public String getEmpNo() {  
  6.    return empNo;  
  7. }  
  8. public void setEmpNo(String empNo) {  
  9.    this.empNo = empNo;  
  10. }  
  11. public String getEmpName() {  
  12.    return empName;  
  13. }  
  14. public void setEmpName(String empName) {  
  15.    this.empName = empName;  
  16. }  
  17. public float getSal() {  
  18.    return sal;  
  19. }  
  20. public void setSal(float sal) {  
  21.    this.sal = sal;  
  22. }  
  23. public Emp(String empNo,String empName,float sal){  
  24.    this.empNo = empNo ;  
  25.    this.empName = empName ;  
  26.    this.sal = sal ;  
  27. }   
  28. }  

MyComparator檔案如下:

Java程式碼  收藏程式碼
  1. class MyComparator implements
     Comparator{  
  2.     public int compare(Object o1,Object o2) {  
  3.        Emp e1=(Emp)o1;  
  4.        Emp e2=(Emp)o2;   
  5.        if(e1.getSal()<e2.getSal())  
  6.         return 1;  
  7.        else  
  8.         return 0;  
  9.        }  
  10. }  

主函式Test.java檔案如下:

Java程式碼  收藏程式碼
  1. public class Test {  
  2. /** 
  3. * @param args 
  4. */  
  5. public static void main(String[] args) {  
  6.    // TODO Auto-generated method stub  
  7.    ArrayList al = new ArrayList() ;  
  8.    Emp emp1 = new Emp("sn001","ysj1",2500) ;  
  9.    Emp emp2 = new Emp("sn002","ysj2",1200) ;  
  10.    Emp emp3 = new Emp("sn003","ysj3",8900) ;  
  11.    Emp emp4 = new Emp("sn004","ysj4",3400) ;  
  12.    Emp emp5 = new Emp("sn005","ysj5",4500) ;  
  13.    al.add(emp1) ;  
  14.    al.add(emp2) ;  
  15.    al.add(emp3) ;  
  16.    al.add(emp4) ;  
  17.    al.add(emp5) ;  
  18.    System.out.println("排序前的值");  
  19.    for(int i=0;i<al.size();i++){  
  20.     Emp emp = (Emp)al.get(i) ;  
  21.     System.out.println(emp.getSal());  
  22.    }   
  23.    //必須是Comparator中的compare方法和Collections.sort方法配合使用才管用  
  24.    MyComparator mc = new MyComparator() ;  
  25.    Collections.sort(al, mc) ;  
  26.    System.out.println("排序後的值");  
  27.    for(int i=0;i<al.size();i++){  
  28.     Emp emp = (Emp)al.get(i) ;  
  29.     System.out.println(emp.getSal());  
  30.    }  
  31. }  
  32. }