- package cn.itcast_自然排序与比较器排序;
- import java.util.Comparator;
- import java.util.Scanner;
- import java.util.TreeSet;
- /*
- * 创建5个学生信息(姓名、语文成绩、英语成绩、数学成绩),按照总分从高到低在控制台输出
- */
- public class Demo_比较器排序 {
- public static void main(String[] args) {
- // 创建集合对象,并用比较器排序,实现匿名内部类
- TreeSet<Stu> ts = new TreeSet<Stu>(new Comparator<Stu>() {
- @Override
- public int compare(Stu o1, Stu o2) {
- // 首先,按要求总分从高到底排序
- int num = o1.getSum() - o2.getSum();
- // 如果总分相同,再判断其他条件
- int num1 = num == 0 ? o1.getChinese() - o2.getChinese() : num;
- int num2 = num1 == 0 ? o1.getEnglish() - o2.getEnglish() : num1;
- int num3 = num2 == 0 ? o1.getMath() - o2.getMath() : num2;
- return num3;
- }
- });
- System.out.println("开始录入成绩!");
- // 控制台输入3个学生信息
- Scanner sc = new Scanner(System.in);
- for (int i = 0; i < 3; i++) {
- System.out.println("请输入学生姓名:");
- String name = sc.next();
- System.out.println("请输入语文成绩:");
- int chinese = sc.nextInt();
- System.out.println("请输入英语成绩:");
- int english = sc.nextInt();
- System.out.println("请输入数学成绩:");
- int math = sc.nextInt();
- // 将学生封装到到学生对象中
- Stu stu = new Stu();
- stu.setName(name);
- stu.setChinese(chinese);
- stu.setEnglish(english);
- stu.setMath(math);
- // 将学生对象添加到集合中
- ts.add(stu);
- }
- System.out.println("成绩录入完毕!");
- System.out.println("姓名\t\t" + "语文成绩\t\t" + "英语成绩\t\t" + "数学成绩\t\t"+"总分");
- // 遍历输出
- for (Stu s : ts) {
- System.out.println(s.getName() + "\t\t" + s.getChinese() + "\t\t"
- + s.getEnglish() + "\t\t" + s.getMath()+"\t\t"+s.getSum());
- }
- }
- }
复制代码 |
|