题目
5、请声明一个员工类Employee,有编号,姓名,薪资,实现java.lang.Comparable接口,按照编号升序排序。
在测试类TestEmployee中,创建员工数组,并初始化5个员工,
(1)先遍历显示一遍
(2)再调用Arrays.sort(Object[] arr)排序,然后再遍历显示一遍
(3)再调用Arrays.sort(Object[] arr,Comparator c)排序,然后再遍历显示一遍,按照薪资降序排列
Employee类
/*
* 请声明一个员工类Employee,有编号,姓名,薪资,
* 实现java.lang.Comparable接口,按照编号升序排序。
*/
public class Employee implements Comparable{
private int id;
private String name;
private int salary;
public Employee() {
super();
}
public Employee(int id, String name, int salary) {
super();
this.id = id;
this.name = name;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "Employee [id=" + id + ", name=" + name + ", salary=" + salary + "]";
}
@Override
public int compareTo(Object o) {
Employee em = (Employee)o;
return this.getId() - em.getId();
}
}
TestEmployee类
import java.util.Arrays;
import java.util.Comparator;
public class TestEmployee {
public static void main(String[] args) {
//在测试类TestEmployee中,创建员工数组,并初始化5个员工,
Employee[] arr = new Employee[5];
arr[0] = new Employee(1,"张三",5000);
arr[1] = new Employee(2,"李四",8000);
arr[2] = new Employee(3,"王菲",12000);
arr[3] = new Employee(4,"刘瑞",5500);
arr[4] = new Employee(5,"陈贵",21000);
//(1)先遍历显示一遍
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("--------------------");
//(2)再调用Arrays.sort(Object[] arr)排序,然后再遍历显示一遍
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//(3)再调用Arrays.sort(Object[] arr,Comparator c)排序,
//然后再遍历显示一遍,按照薪资降序排列
//实现方法一:采用匿名内部类
/* Arrays.sort(arr, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Employee e1 = (Employee)o1;
Employee e2 = (Employee)o2;
return e2.getSalary() - e1.getSalary();
}
});
System.out.println("--------------------");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}*/
// SalaryCompare sc = new SalaryCompare();
// Arrays.sort(arr,sc);
//简化为一行代码
Arrays.sort(arr,new SalaryCompare());
System.out.println("--------------------");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
class SalaryCompare implements Comparator{
@Override
public int compare(Object o1, Object o2) {
Employee e1 = (Employee)o1;
Employee e2 = (Employee)o2;
return e2.getSalary() - e1.getSalary();
}
}
运行结果: