1.参照书上例题,使用List集合完成对教师工资的排序。

有5个教师,基本信息如下:
姓名:张老师 工资:7800
姓名:王老师 工资:9800
姓名:刘老师 工资:6800
姓名:李老师 工资:5800
姓名:孙老师 工资:8800
将5个教师信息存放到ArrayList集合中,并使用下面三种方法中的任意一种方法,完成对教师工资由高到低的排序。
(1)冒泡排序算法
(2)或定义教师比较器类TeacherComparator
(3)或让Teacher类实现Comparable接口
编写测试类,输出排序前的顺序和排序后的顺序。
输出结果如下:
排序前顺序:
姓名:张老师 工资:7800
姓名:王老师 工资:9800
姓名:刘老师 工资:6800
姓名:李老师 工资:5800
姓名:孙老师 工资:8800
排序后顺序:
姓名:王老师 工资:9800
姓名:孙老师 工资:8800
姓名:张老师 工资:7800
姓名:刘老师 工资:6800
姓名:李老师 工资:5800
说明
程序没有输入!

  1. import java.util.List;
  2. import java.util.ArrayList;
  3. class Teacher{
  4. private String name;
  5. private int age;
  6. private int salary;
  7. public Teacher(String name,int age,int salary){
  8. this.name=name;
  9. this.age=age;
  10. this.salary=salary;
  11. }
  12. public String getName(){
  13. return name;
  14. }
  15. public int getAge(){
  16. return age;
  17. }
  18. public int getSalary(){
  19. return salary;
  20. }
  21. }
  22. class TeacherComparator{
  23. private List<Teacher>TeaList;
  24. private int size;
  25. public TeacherComparator(){
  26. size=0;
  27. TeaList=null;
  28. }
  29. public void createComparator(){
  30. String names[]={"张老师","王老师","刘老师","李老师","孙老师"};
  31. int salarys[]={7800,9800,6800,5800,8800};
  32. int ages[]={17,18,18,19,17};
  33. size=names.length;
  34. TeaList=new ArrayList<Teacher>();
  35. Teacher temp;
  36. for(int i=0;i<size;i++){
  37. temp=new Teacher(names[i],ages[i],salarys[i]);
  38. TeaList.add(temp);
  39. }
  40. }
  41. public void sort(){
  42. Teacher temp;//冒泡排序
  43. for(int i=0;i<size;i++){
  44. for(int j=1;j<size;j++){
  45. if(TeaList.get(j-1).getSalary()<TeaList.get(j).getSalary()){
  46. temp=TeaList.get(j-1);
  47. TeaList.set(j-1,TeaList.get(j));
  48. TeaList.set(j,temp);
  49. }
  50. }
  51. }
  52. }
  53. public String output(){
  54. StringBuilder TeacherInfo=new StringBuilder();
  55. for(Teacher Tea : TeaList){
  56. TeacherInfo.append("姓名:"+Tea.getName()+"\t工资:"+Tea.getSalary()+"\r\n");
  57. }
  58. return TeacherInfo.toString();
  59. }
  60. }
  61. public class Main{
  62. public static void main(String[] args){
  63. TeacherComparator sComparator=new TeacherComparator();//创建Comparator对象
  64. sComparator.createComparator();//给Comparator添加教师
  65. System.out.println("排序前顺序:");
  66. System.out.println(sComparator.output());//排序前输出
  67. sComparator.sort();//冒泡排序
  68. System.out.println("排序后顺序:");
  69. System.out.println(sComparator.output());//排序后输出
  70. }
  71. }

2.在第1题的基础上,为类添加一个增加学生的方法,该方法的方法头如下:

public void addTeacher(Teacher t)
为类添加一个删除学生的方法,该方法的方法头如下:
public void removeTeacher(Teacher t)
然后修改测试类,添加一个陈老师,工资为9000。输出添加后的排序结果。之后从列表中删除张老师,再输出删除后的排序结果。
程序的输出结果如下:
排序前顺序:
姓名:张老师 工资:7800
姓名:王老师 工资:9800
姓名:刘老师 工资:6800
姓名:李老师 工资:5800
姓名:孙老师 工资:8800
排序后顺序:
姓名:王老师 工资:9800
姓名:孙老师 工资:8800
姓名:张老师 工资:7800
姓名:刘老师 工资:6800
姓名:李老师 工资:5800
添加一个教师后的排序顺序:
姓名:王老师 工资:9800
姓名:陈老师 工资:9000
姓名:孙老师 工资:8800
姓名:张老师 工资:7800
姓名:刘老师 工资:6800
姓名:李老师 工资:5800
删除一个教师后的排序顺序:
姓名:王老师 工资:9800
姓名:陈老师 工资:9000
姓名:孙老师 工资:8800
姓名:刘老师 工资:6800
姓名:李老师 工资:5800

  1. import java.util.List;
  2. import java.util.ArrayList;
  3. class Teacher{
  4. private String name;
  5. private int age;
  6. private int salary;
  7. public Teacher(String name,int age,int salary){
  8. this.name=name;
  9. this.age=age;
  10. this.salary=salary;
  11. }
  12. public String getName(){
  13. return name;
  14. }
  15. public int getAge(){
  16. return age;
  17. }
  18. public int getSalary(){
  19. return salary;
  20. }
  21. }
  22. class TeacherComparator{
  23. private List<Teacher>TeaList;
  24. private int size;
  25. public TeacherComparator(){
  26. size=0;
  27. TeaList=null;
  28. }
  29. public void createComparator(){
  30. String names[]={"张老师","王老师","刘老师","李老师","孙老师"};
  31. int salarys[]={7800,9800,6800,5800,8800};
  32. int ages[]={17,18,18,19,17};
  33. size=names.length;
  34. TeaList=new ArrayList<Teacher>();
  35. Teacher temp;
  36. for(int i=0;i<size;i++){
  37. temp=new Teacher(names[i],ages[i],salarys[i]);
  38. TeaList.add(temp);
  39. }
  40. }
  41. public void sort(){
  42. Teacher temp;//冒泡排序
  43. for(int i=0;i<size;i++){
  44. for(int j=1;j<size;j++){
  45. if(TeaList.get(j-1).getSalary()<TeaList.get(j).getSalary()){
  46. temp=TeaList.get(j-1);
  47. TeaList.set(j-1,TeaList.get(j));
  48. TeaList.set(j,temp);
  49. }
  50. }
  51. }
  52. }
  53. public void addTeacher(Teacher t){
  54. TeaList.add(t);
  55. size=TeaList.size();
  56. }
  57. public void removeTeacher(Teacher t){
  58. for(int i = 0; i < size; i++)
  59. if(TeaList.get(i).getName()==t.getName()){
  60. TeaList.remove(i);
  61. size=TeaList.size();
  62. }
  63. }
  64. public String output(){
  65. StringBuilder TeacherInfo=new StringBuilder();
  66. for(Teacher Tea : TeaList){
  67. TeacherInfo.append("姓名:"+Tea.getName()+"\t工资:"+Tea.getSalary()+"\r\n");
  68. }
  69. return TeacherInfo.toString();
  70. }
  71. }
  72. public class Main{
  73. public static void main(String[] args){
  74. TeacherComparator sComparator=new TeacherComparator();//创建Comparator对象
  75. sComparator.createComparator();//给Comparator添加教师
  76. System.out.println("排序前顺序:");
  77. System.out.println(sComparator.output());//排序前输出
  78. sComparator.sort();//冒泡排序
  79. System.out.println("排序后顺序:");
  80. System.out.println(sComparator.output());//排序后输出
  81. System.out.println("添加一个教师后的排序顺序:");
  82. sComparator.addTeacher(new Teacher("陈老师",25,9000));
  83. sComparator.sort();
  84. System.out.println(sComparator.output());//添加一个教师后的排序顺序:
  85. System.out.println("删除一个教师后的排序顺序:");
  86. Teacher t;
  87. t=new Teacher("张老师",17,7800);
  88. sComparator.removeTeacher(t);
  89. sComparator.sort();
  90. System.out.println(sComparator.output());//一个教师后的排序顺序:
  91. }
  92. }