A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 18263368378 中级黑马   /  2016-4-24 19:07  /  469 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

首先创建一个学生信息类
创建一个TreeSet集合
学生类要实现compareble接口,并且重写compareTo方法
按照总成绩排序,其次姓名,其次各科成绩等
这里说的排序是输出的自然排序 跟存储顺序无关的,并且还要去重
代码:
package kehouzuoye23_5;

public class StudentMessage implements Comparable<StudentMessage> {
        private String name;
        private int  yuwen;
        private int  shuxue;
        private int  yingyu;
        public StudentMessage() {
                super();
        }
        public StudentMessage(String name, int yuwen, int shuxue, int yingyu) {
                super();
                this.name = name;
                this.yuwen = yuwen;
                this.shuxue = shuxue;
                this.yingyu = yingyu;
        }
        public String toString() {
                return "姓名:" + name + ", 语文:" + yuwen
                                + ", 数学:" + shuxue + ", 英语:" + yingyu ;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public int getYuwen() {
                return yuwen;
        }
        public void setYuwen(int yuwen) {
                this.yuwen = yuwen;
        }
        public int getShuxue() {
                return shuxue;
        }
        public void setShuxue(int shuxue) {
                this.shuxue = shuxue;
        }
        public int getYingyu() {
                return yingyu;
        }
        public void setYingyu(int yingyu) {
                this.yingyu = yingyu;
        }
        public int compareTo(StudentMessage o) {
                int a = -(this.yuwen+this.shuxue+this.yingyu-o.getYuwen()-o.getShuxue()-o.getYingyu());
                int b = -(this.name.compareTo(o.getName()));
                int c =-(this.yuwen-o.getYuwen());
                int d = -(this.shuxue-o.getShuxue());
                int e = -(this.yingyu-o.getYingyu());
                if(a==0){
                        if(b==0){
                                if(c==0){
                                        return d==0?e:d;
                                }
                                return c;
                        }
                        return b;
                }
                return a;
        }
}
测试类:
package kehouzuoye23_5;

import java.util.Collections;
import java.util.Scanner;
import java.util.TreeSet;

public class StudentMessageDemo {
        public static void main(String[] args) {
                TreeSet<StudentMessage> ts = new TreeSet<StudentMessage>();
                Scanner sc = new Scanner(System.in);
                for (int i = 0; i < 5; i++) {
                        System.out.println("请输入学生姓名:");
                        String s1 = sc.nextLine();
                        System.out.println("语文成绩:");
                        int a = sc.nextInt();
                        sc.nextLine();
                        System.out.println("数学成绩:");
                        int b = sc.nextInt();
                        sc.nextLine();
                        System.out.println("英语成绩:");
                        int c = sc.nextInt();
                        sc.nextLine();
                        StudentMessage s = new StudentMessage(s1,a,b,c);
                        ts.add(s);
                }
                for (StudentMessage sM : ts) {
                        System.out.println(sM);
                }
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马