java.util.Comparator使用示例

java.util.Comparator使用示例

Comparator的具体实现类
public   class  AgeComparator  implements  Comparator  {
  
public int compare(Object op1, Object op2) {
    Employee eOp1 
= (Employee) op1;
    Employee eOp2 
= (Employee) op2;

    
// 按年龄排序
    return eOp1.getAge()-(eOp2.getAge());
  }

}


public   class  NameComparator  implements  Comparator  {
  
public int compare(Object op1, Object op2) {
    Employee eOp1 
= (Employee) op1;
    Employee eOp2 
= (Employee) op2;

    
// 按姓名排序
    return eOp1.getName().compareTo(eOp2.getName());
  }

}


public   class  SalaryComparator  implements  Comparator  {
  
public int compare(Object op1, Object op2) {
    Employee eOp1 
= (Employee) op1;
    Employee eOp2 
= (Employee) op2;

    
// 按薪水排序
    return eOp1.getSalary()-(eOp2.getSalary());
  }

}


Employee类:

public   class  Employee {
  
protected String name;
  
protected int age;
  
protected int salary;
  
  
public Employee(String name,int age,int salary){
    
this.name=name;
    
this.age=age;
    
this.salary=salary;
  }

  
  
public int getAge() {
    
return age;
  }

  
public void setAge(int age) {
    
this.age = age;
  }

  
public String getName() {
    
return name;
  }

  
public void setName(String name) {
    
this.name = name;
  }

  
public int getSalary() {
    
return salary;
  }

  
public void setSalary(int salary) {
    
this.salary = salary;
  }
 
}


测试:
public   class  Main {
  
public static void main(String[] args){
    List
<Employee> employees=new ArrayList<Employee>();
    
    employees.add(
new Employee("Andy",21,2000));
    employees.add(
new Employee("Felix",21,3000));
    employees.add(
new Employee("Bill",35,20000));
    employees.add(
new Employee("Helen",21,10000));
    employees.add(
new Employee("Cindy",28,8000));
    employees.add(
new Employee("Douglas",25,5000));
        
    
// 按名称排序
      Collections.sort(employees,new NameComparator());
      display(employees);

      
// 按年龄排序
      Collections.sort(employees,new AgeComparator());
      display(employees);
      
      
// 按薪水排序
      Collections.sort(employees,new SalaryComparator());
      display(employees);
  }

  
  
public static void display(List<Employee> employees){
    
for(Employee e:employees){
      System.out.println(
"雇员名="+e.getName()+" 年龄="+e.age+" 薪水="+e.getSalary());
    }

    
    System.out.println();
  }

}


输出:
雇员名 = Andy 年龄 = 21  薪水 = 2000
雇员名
= Bill 年龄 = 35  薪水 = 20000
雇员名
= Cindy 年龄 = 28  薪水 = 8000
雇员名
= Douglas 年龄 = 25  薪水 = 5000
雇员名
= Felix 年龄 = 21  薪水 = 3000
雇员名
= Helen 年龄 = 21  薪水 = 10000

雇员名
= Andy 年龄 = 21  薪水 = 2000
雇员名
= Felix 年龄 = 21  薪水 = 3000
雇员名
= Helen 年龄 = 21  薪水 = 10000
雇员名
= Douglas 年龄 = 25  薪水 = 5000
雇员名
= Cindy 年龄 = 28  薪水 = 8000
雇员名
= Bill 年龄 = 35  薪水 = 20000

雇员名
= Andy 年龄 = 21  薪水 = 2000
雇员名
= Felix 年龄 = 21  薪水 = 3000
雇员名
= Douglas 年龄 = 25  薪水 = 5000
雇员名
= Cindy 年龄 = 28  薪水 = 8000
雇员名
= Helen 年龄 = 21  薪水 = 10000
雇员名
= Bill 年龄 = 35  薪水 = 20000


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值