(1)声明一个Employee员工类
-
包含编号、姓名、薪资、年龄,属性私有化
-
提供get/set,提供无参和有参构造
-
重写toString,返回员工信息
-
实现Comparable接口,重写int compareTo(Employee emp)方法,按照编号比较大小。
(2)编写数组工具类ArrayTools,包含
-
静态方法public static void sort(Object[] arr):实现给对象数组从小到大排序,要求元素的运行时类型必须实现Comparable接口
-
静态方法public static void sort(Object[] arr, Comparator c):实现给对象数组从小到大排序,需要提供一个Comparator接口的实现类对象,给数组的元素对象排序。
-
静态方法public static void print(Object[] arr):使用for循环遍历输出数组元素
(3)在测试类创建Employee[]元素数组,长度为5,创建5个员工对象
-
按照编号从小到大排序输出
-
按照编号从大到小排序输出(声明一个类实现Comparator接口,实现按照编号逆序比较大小)
-
按照薪资从低到高排序输出(声明一个类实现Comparator接口,实现按照薪资比较大小)
-
按照年龄从大到小排序输出(声明一个类实现Comparator接口,实现按照年龄逆序比较大小)
代码实现
package Shang2149.exer;
import java.util.Comparator;
public class ListTools implements Comparable {
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
@Override
public int compareTo(Object o) {
return 0;
}
public class EmployeeSalaryComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Employee e1 = (Employee) o1;
Employee e2 = (Employee) o2;
return (int) (e1.getSalary() - e2.getSalary());
}
}
public static class EmployeeAgeComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Employee e1 = (Employee) o1;
Employee e2 = (Employee) o2;
return e1.getAge() - e2.getAge();
}
}
}
package Shang2149.exer;
/*
- 包含编号、姓名、薪资、年龄,属性私有化
- 提供get/set,提供无参和有参构造
- 重写toString,返回员工信息
- 实现Comparable接口,重写int compareTo(Employee emp)方法,按照编号比较大小。
*/
public class Employee implements Comparable {
private int id;
private String name;
private double salary;
private int age;
public Employee() {
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", name='" + name + '\'' +
", salary=" + salary +
", age=" + age +
'}';
}
public Employee(int id, String name, double salary, int age) {
this.id = id;
this.name = name;
this.salary = salary;
this.age = age;
}
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 double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Object o) {
Employee e = (Employee) o;
return this.id - e.id;
}
}
package Shang2149.exer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<Employee> list = new ArrayList();
list.add(new Employee(2, "张三", 1000, 21));
list.add(new Employee(5, "碗中王", 7000, 25));
list.add(new Employee(3, "利益等", 3000, 26));
list.add(new Employee(4, "成龙", 5000, 29));
list.add(new Employee(1, "狗屎", 6000, 19));
Collections.sort(list);
System.out.println("按照id逆序");
Collections.reverse(list);
for (Object o : list
) {
System.out.println(o);
}
ListTools.EmployeeAgeComparator ac = new ListTools.EmployeeAgeComparator();
Collections.sort(list, ac);
System.out.println("按照年龄逆序");
Collections.reverse(list);
for (Object o : list
) {
System.out.println(o);
}
}
}