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
说明
程序没有输入!
import java.util.List;
import java.util.ArrayList;
class Teacher{
private String name;
private int age;
private int salary;
public Teacher(String name,int age,int salary){
this.name=name;
this.age=age;
this.salary=salary;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int getSalary(){
return salary;
}
}
class TeacherComparator{
private List<Teacher>TeaList;
private int size;
public TeacherComparator(){
size=0;
TeaList=null;
}
public void createComparator(){
String names[]={"张老师","王老师","刘老师","李老师","孙老师"};
int salarys[]={7800,9800,6800,5800,8800};
int ages[]={17,18,18,19,17};
size=names.length;
TeaList=new ArrayList<Teacher>();
Teacher temp;
for(int i=0;i<size;i++){
temp=new Teacher(names[i],ages[i],salarys[i]);
TeaList.add(temp);
}
}
public void sort(){
Teacher temp;//冒泡排序
for(int i=0;i<size;i++){
for(int j=1;j<size;j++){
if(TeaList.get(j-1).getSalary()<TeaList.get(j).getSalary()){
temp=TeaList.get(j-1);
TeaList.set(j-1,TeaList.get(j));
TeaList.set(j,temp);
}
}
}
}
public String output(){
StringBuilder TeacherInfo=new StringBuilder();
for(Teacher Tea : TeaList){
TeacherInfo.append("姓名:"+Tea.getName()+"\t工资:"+Tea.getSalary()+"\r\n");
}
return TeacherInfo.toString();
}
}
public class Main{
public static void main(String[] args){
TeacherComparator sComparator=new TeacherComparator();//创建Comparator对象
sComparator.createComparator();//给Comparator添加教师
System.out.println("排序前顺序:");
System.out.println(sComparator.output());//排序前输出
sComparator.sort();//冒泡排序
System.out.println("排序后顺序:");
System.out.println(sComparator.output());//排序后输出
}
}
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
import java.util.List;
import java.util.ArrayList;
class Teacher{
private String name;
private int age;
private int salary;
public Teacher(String name,int age,int salary){
this.name=name;
this.age=age;
this.salary=salary;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public int getSalary(){
return salary;
}
}
class TeacherComparator{
private List<Teacher>TeaList;
private int size;
public TeacherComparator(){
size=0;
TeaList=null;
}
public void createComparator(){
String names[]={"张老师","王老师","刘老师","李老师","孙老师"};
int salarys[]={7800,9800,6800,5800,8800};
int ages[]={17,18,18,19,17};
size=names.length;
TeaList=new ArrayList<Teacher>();
Teacher temp;
for(int i=0;i<size;i++){
temp=new Teacher(names[i],ages[i],salarys[i]);
TeaList.add(temp);
}
}
public void sort(){
Teacher temp;//冒泡排序
for(int i=0;i<size;i++){
for(int j=1;j<size;j++){
if(TeaList.get(j-1).getSalary()<TeaList.get(j).getSalary()){
temp=TeaList.get(j-1);
TeaList.set(j-1,TeaList.get(j));
TeaList.set(j,temp);
}
}
}
}
public void addTeacher(Teacher t){
TeaList.add(t);
size=TeaList.size();
}
public void removeTeacher(Teacher t){
for(int i = 0; i < size; i++)
if(TeaList.get(i).getName()==t.getName()){
TeaList.remove(i);
size=TeaList.size();
}
}
public String output(){
StringBuilder TeacherInfo=new StringBuilder();
for(Teacher Tea : TeaList){
TeacherInfo.append("姓名:"+Tea.getName()+"\t工资:"+Tea.getSalary()+"\r\n");
}
return TeacherInfo.toString();
}
}
public class Main{
public static void main(String[] args){
TeacherComparator sComparator=new TeacherComparator();//创建Comparator对象
sComparator.createComparator();//给Comparator添加教师
System.out.println("排序前顺序:");
System.out.println(sComparator.output());//排序前输出
sComparator.sort();//冒泡排序
System.out.println("排序后顺序:");
System.out.println(sComparator.output());//排序后输出
System.out.println("添加一个教师后的排序顺序:");
sComparator.addTeacher(new Teacher("陈老师",25,9000));
sComparator.sort();
System.out.println(sComparator.output());//添加一个教师后的排序顺序:
System.out.println("删除一个教师后的排序顺序:");
Teacher t;
t=new Teacher("张老师",17,7800);
sComparator.removeTeacher(t);
sComparator.sort();
System.out.println(sComparator.output());//一个教师后的排序顺序:
}
}