对ArrayList中某一元素进行排序

 对ArrayList中的元素进行排序,主要考查的是对util包中的Comparator接口和Collections类的使用。

实现Comparator接口必须实现compare方法,自己可以去看API帮助文档。

创建一个Comparator实例后,用Collections.sort(List,<E>)对List中的元素进行排序。

下面是实现代码:

以下文件必须引入util包:

package com.test;

import java.util.*;

Emp.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. }

自己实现的Comparator接口

  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

  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. }
经验分享 程序员 微信小程序 职场和发展