鱼C论坛

 找回密码
 立即注册
查看: 473|回复: 2

[已解决]这个怎么写?

[复制链接]
发表于 2023-10-24 20:04:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
4.请设计教师类Teacher、比较器类MyComparer。教师有姓名、工资属性以及相应的getter和setter方法,并重写toString方法。比较器类有两个方法,一个是静态方法compareBySalory(Teacher t1, Teacher t2),要求按升序排序;一个是实例方法compareBySaloryDesc(Teacher t1, Teacher t2),要求按降序排序。请编写应用程序分别使用匿名内部类、lambda表达式以及方法引用对若干教师按照工资高低进行排序。
最佳答案
2023-10-24 20:05:07
这是一个关于Java编程的问题,需要设计教师类和比较器类,并使用匿名内部类、lambda表达式和方法引用对教师按照工资高低进行排序。

以下是代码示例:

教师类Teacher:

  1. public class Teacher {
  2.     private String name;
  3.     private double salary;

  4.     public Teacher(String name, double salary) {
  5.         this.name = name;
  6.         this.salary = salary;
  7.     }

  8.     public String getName() {
  9.         return name;
  10.     }

  11.     public double getSalary() {
  12.         return salary;
  13.     }

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

  17.     public void setSalary(double salary) {
  18.         this.salary = salary;
  19.     }

  20.     @Override
  21.     public String toString() {
  22.         return "Teacher{" +
  23.                 "name='" + name + '\'' +
  24.                 ", salary=" + salary +
  25.                 '}';
  26.     }
  27. }
复制代码


比较器类MyComparer:

  1. import java.util.Comparator;

  2. public class MyComparer {
  3.     public static int compareBySalory(Teacher t1, Teacher t2) {
  4.         return Double.compare(t1.getSalary(), t2.getSalary());
  5.     }

  6.     public int compareBySaloryDesc(Teacher t1, Teacher t2) {
  7.         return Double.compare(t2.getSalary(), t1.getSalary());
  8.     }
  9. }
复制代码


使用匿名内部类对教师按照工资高低进行排序:

  1. import java.util.Arrays;
  2. import java.util.Comparator;

  3. public class Main {
  4.     public static void main(String[] args) {
  5.         Teacher[] teachers = {
  6.                 new Teacher("Tom", 5000),
  7.                 new Teacher("Jerry", 6000),
  8.                 new Teacher("Mickey", 4000)
  9.         };

  10.         // 使用匿名内部类按照工资升序排序
  11.         Arrays.sort(teachers, new Comparator<Teacher>() {
  12.             @Override
  13.             public int compare(Teacher t1, Teacher t2) {
  14.                 return Double.compare(t1.getSalary(), t2.getSalary());
  15.             }
  16.         });

  17.         // 输出排序结果
  18.         for (Teacher teacher : teachers) {
  19.             System.out.println(teacher);
  20.         }
  21.     }
  22. }
复制代码


使用lambda表达式对教师按照工资高低进行排序:

  1. import java.util.Arrays;

  2. public class Main {
  3.     public static void main(String[] args) {
  4.         Teacher[] teachers = {
  5.                 new Teacher("Tom", 5000),
  6.                 new Teacher("Jerry", 6000),
  7.                 new Teacher("Mickey", 4000)
  8.         };

  9.         // 使用lambda表达式按照工资降序排序
  10.         Arrays.sort(teachers, (t1, t2) -> Double.compare(t2.getSalary(), t1.getSalary()));

  11.         // 输出排序结果
  12.         for (Teacher teacher : teachers) {
  13.             System.out.println(teacher);
  14.         }
  15.     }
  16. }
复制代码


使用方法引用对教师按照工资高低进行排序:

  1. import java.util.Arrays;

  2. public class Main {
  3.     public static void main(String[] args) {
  4.         Teacher[] teachers = {
  5.                 new Teacher("Tom", 5000),
  6.                 new Teacher("Jerry", 6000),
  7.                 new Teacher("Mickey", 4000)
  8.         };

  9.         // 使用方法引用按照工资升序排序
  10.         Arrays.sort(teachers, Comparator.comparingDouble(Teacher::getSalary));

  11.         // 输出排序结果
  12.         for (Teacher teacher : teachers) {
  13.             System.out.println(teacher);
  14.         }
  15.     }
  16. }
复制代码


以上就是Java编程的解决方案,其中包括了教师类和比较器类的设计,以及使用匿名内部类、lambda表达式和方法引用对教师按照工资高低进行排序的示例代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-24 20:05:07 | 显示全部楼层    本楼为最佳答案   
这是一个关于Java编程的问题,需要设计教师类和比较器类,并使用匿名内部类、lambda表达式和方法引用对教师按照工资高低进行排序。

以下是代码示例:

教师类Teacher:

  1. public class Teacher {
  2.     private String name;
  3.     private double salary;

  4.     public Teacher(String name, double salary) {
  5.         this.name = name;
  6.         this.salary = salary;
  7.     }

  8.     public String getName() {
  9.         return name;
  10.     }

  11.     public double getSalary() {
  12.         return salary;
  13.     }

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

  17.     public void setSalary(double salary) {
  18.         this.salary = salary;
  19.     }

  20.     @Override
  21.     public String toString() {
  22.         return "Teacher{" +
  23.                 "name='" + name + '\'' +
  24.                 ", salary=" + salary +
  25.                 '}';
  26.     }
  27. }
复制代码


比较器类MyComparer:

  1. import java.util.Comparator;

  2. public class MyComparer {
  3.     public static int compareBySalory(Teacher t1, Teacher t2) {
  4.         return Double.compare(t1.getSalary(), t2.getSalary());
  5.     }

  6.     public int compareBySaloryDesc(Teacher t1, Teacher t2) {
  7.         return Double.compare(t2.getSalary(), t1.getSalary());
  8.     }
  9. }
复制代码


使用匿名内部类对教师按照工资高低进行排序:

  1. import java.util.Arrays;
  2. import java.util.Comparator;

  3. public class Main {
  4.     public static void main(String[] args) {
  5.         Teacher[] teachers = {
  6.                 new Teacher("Tom", 5000),
  7.                 new Teacher("Jerry", 6000),
  8.                 new Teacher("Mickey", 4000)
  9.         };

  10.         // 使用匿名内部类按照工资升序排序
  11.         Arrays.sort(teachers, new Comparator<Teacher>() {
  12.             @Override
  13.             public int compare(Teacher t1, Teacher t2) {
  14.                 return Double.compare(t1.getSalary(), t2.getSalary());
  15.             }
  16.         });

  17.         // 输出排序结果
  18.         for (Teacher teacher : teachers) {
  19.             System.out.println(teacher);
  20.         }
  21.     }
  22. }
复制代码


使用lambda表达式对教师按照工资高低进行排序:

  1. import java.util.Arrays;

  2. public class Main {
  3.     public static void main(String[] args) {
  4.         Teacher[] teachers = {
  5.                 new Teacher("Tom", 5000),
  6.                 new Teacher("Jerry", 6000),
  7.                 new Teacher("Mickey", 4000)
  8.         };

  9.         // 使用lambda表达式按照工资降序排序
  10.         Arrays.sort(teachers, (t1, t2) -> Double.compare(t2.getSalary(), t1.getSalary()));

  11.         // 输出排序结果
  12.         for (Teacher teacher : teachers) {
  13.             System.out.println(teacher);
  14.         }
  15.     }
  16. }
复制代码


使用方法引用对教师按照工资高低进行排序:

  1. import java.util.Arrays;

  2. public class Main {
  3.     public static void main(String[] args) {
  4.         Teacher[] teachers = {
  5.                 new Teacher("Tom", 5000),
  6.                 new Teacher("Jerry", 6000),
  7.                 new Teacher("Mickey", 4000)
  8.         };

  9.         // 使用方法引用按照工资升序排序
  10.         Arrays.sort(teachers, Comparator.comparingDouble(Teacher::getSalary));

  11.         // 输出排序结果
  12.         for (Teacher teacher : teachers) {
  13.             System.out.println(teacher);
  14.         }
  15.     }
  16. }
复制代码


以上就是Java编程的解决方案,其中包括了教师类和比较器类的设计,以及使用匿名内部类、lambda表达式和方法引用对教师按照工资高低进行排序的示例代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-29 17:46:00 | 显示全部楼层
isdkz 发表于 2023-10-24 20:05
这是一个关于Java编程的问题,需要设计教师类和比较器类,并使用匿名内部类、lambda表达式和方法引用对教师 ...

类图怎么写?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-18 11:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表