|
发表于 2023-10-29 18:01:22
|
显示全部楼层
首先,我们需要设计教师类Teacher和比较器类MyComparer。教师类应包含姓名和工资属性,并提供相应的getter和setter方法。此外,我们还需要重写toString方法以便在需要时打印教师对象的信息。
- public class Teacher {
- private String name;
- private double salary;
- public Teacher(String name, double salary) {
- this.name = name;
- this.salary = salary;
- }
- 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;
- }
- @Override
- public String toString() {
- return "Teacher{" +
- "name='" + name + '\'' +
- ", salary=" + salary +
- '}';
- }
- }
复制代码
接下来,我们需要实现比较器类MyComparer。这个类应该包含两个方法:一个是静态方法compareBySalory,用于按升序排序;另一个是实例方法compareBySaloryDesc,用于按降序排序。
- import java.util.Comparator;
- public class MyComparer {
- public static int compareBySalory(Teacher t1, Teacher t2) {
- return Double.compare(t1.getSalary(), t2.getSalary());
- }
- public int compareBySaloryDesc(Teacher t1, Teacher t2) {
- return Double.compare(t2.getSalary(), t1.getSalary());
- }
- }
复制代码
现在,我们可以编写应用程序来使用匿名内部类、lambda表达式和方法引用对教师按照工资高低进行排序。
使用匿名内部类:
- import java.util.Arrays;
- import java.util.Comparator;
- public class Main {
- public static void main(String[] args) {
- Teacher[] teachers = {
- new Teacher("张三", 5000),
- new Teacher("李四", 6000),
- new Teacher("王五", 4000)
- };
- // 使用匿名内部类按工资升序排序
- Arrays.sort(teachers, new Comparator<Teacher>() {
- @Override
- public int compare(Teacher t1, Teacher t2) {
- return Double.compare(t1.getSalary(), t2.getSalary());
- }
- });
- // 打印排序结果
- for (Teacher teacher : teachers) {
- System.out.println(teacher);
- }
- }
- }
复制代码
使用lambda表达式:
- import java.util.Arrays;
- import java.util.Comparator;
- public class Main {
- public static void main(String[] args) {
- Teacher[] teachers = {
- new Teacher("张三", 5000),
- new Teacher("李四", 6000),
- new Teacher("王五", 4000)
- };
- // 使用lambda表达式按工资升序排序
- Arrays.sort(teachers, (t1, t2) -> Double.compare(t1.getSalary(), t2.getSalary()));
- // 打印排序结果
- for (Teacher teacher : teachers) {
- System.out.println(teacher);
- }
- }
- }
复制代码
使用方法引用:
- import java.util.Arrays;
- import java.util.Comparator;
- public class Main {
- public static void main(String[] args) {
- Teacher[] teachers = {
- new Teacher("张三", 5000),
- new Teacher("李四", 6000),
- new Teacher("王五", 4000)
- };
- // 使用方法引用按工资升序排序
- Arrays.sort(teachers, Comparator.comparing(Teacher::getSalary));
- // 打印排序结果
- for (Teacher teacher : teachers) {
- System.out.println(teacher);
- }
- }
- }
复制代码
以上是根据题目要求设计的类图和相应的代码示例。在应用程序中,我们使用了匿名内部类、lambda表达式和方法引用来对教师按照工资高低进行排序。 |
|