对ArrayList中的元素按照某一列进行排序

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

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

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

下面是实现代码:

以下文件必须引入util包:

package com.test;

import java.util.*;

Emp.java文件如下:

class Emp{
private String empNo ;
private String empName ;
private float sal ;

public String getEmpNo() {
   return empNo;
}
public void setEmpNo(String empNo) {
   this.empNo = empNo;
}
public String getEmpName() {
   return empName;
}
public void setEmpName(String empName) {
   this.empName = empName;
}
public float getSal() {
   return sal;
}
public void setSal(float sal) {
   this.sal = sal;
}

public Emp(String empNo,String empName,float sal){
   this.empNo = empNo ;
   this.empName = empName ;
   this.sal = sal ;
} 
}

 

MyComparator文件如下:

class MyComparator implements Comparator{

    public int compare(Object o1,Object o2) {
       Emp e1=(Emp)o1;
       Emp e2=(Emp)o2; 
       if(e1.getSal()<e2.getSal())
        return 1;
       else
        return 0;
       }
}

 

主函数Test.java文件如下:

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
   // TODO Auto-generated method stub
   ArrayList al = new ArrayList() ;
   Emp emp1 = new Emp("sn001","ysj1",2500) ;
   Emp emp2 = new Emp("sn002","ysj2",1200) ;
   Emp emp3 = new Emp("sn003","ysj3",8900) ;
   Emp emp4 = new Emp("sn004","ysj4",3400) ;
   Emp emp5 = new Emp("sn005","ysj5",4500) ;
   al.add(emp1) ;
   al.add(emp2) ;
   al.add(emp3) ;
   al.add(emp4) ;
   al.add(emp5) ;
  
   System.out.println("排序前的值");
   for(int i=0;i<al.size();i++){
    Emp emp = (Emp)al.get(i) ;
    System.out.println(emp.getSal());
   } 
   //必须是Comparator中的compare方法和Collections.sort方法配合使用才管用
   MyComparator mc = new MyComparator() ;
   Collections.sort(al, mc) ;
  
   System.out.println("排序后的值");
   for(int i=0;i<al.size();i++){
    Emp emp = (Emp)al.get(i) ;
    System.out.println(emp.getSal());
   }
}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值