好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java案例使用比较排序器comparator实现成绩排序

需求: 用 TreeSet 集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合;要按照总分从高到低进行排序

分析:

1.创建学生类 成员变量 姓名,语文成绩、数学成绩;成员方法 求总分;构造方法 无参构造,带参构造; get\set 方法 2.创建测试类 3.创建 TreeSet 集合对对象,并使用内部类的方式重写 compare 方法

要定好排序规则,主要条件按照总分从高到底排序,在总分相同的情况下按照语文成绩排序,在两者都相同的情况下判断姓名是否相同,相同就不存储,不相同存进来,按照姓名字母进行排序

4.创建学生对象,并使用带参构造添加学生数据 5.使用 add 方法将学生数据加入到TreeSet集合中 6.进行遍历

代码实现:

Student类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

public class Student {

    //成员变量

    private String  name;

    private int YWscore;

    private int YYscore;

?

    //构造方法

    public Student(){}

?

    public Student(String name, int YWscore, int YYscore) {

        this .name = name;

        this .YWscore = YWscore;

        this .YYscore = YYscore;

    }

    //get/set方法

?

    public String getName() {

        return name;

    }

?

    public void setName(String name) {

        this .name = name;

    }

?

    public int getYWscore() {

        return YWscore;

    }

?

    public void setYWscore( int YWscore) {

        this .YWscore = YWscore;

    }

?

    public int getYYscore() {

        return YYscore;

    }

?

    public void setYYscore( int YYscore) {

        this .YYscore = YYscore;

    }

    //定义求总成绩方法

    public int getSum(){

        int sum=YWscore+YYscore;

        return sum;

    }

}

?

测试类

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

public class StudentDemo {

    public static void main(String[] args) {

        //创建TreeSet集合对象

        TreeSet<Student>ts= new TreeSet<Student>( new Comparator<Student>() {

            @Override

            public int compare(Student s1, Student s2) {

//                return 0;

                int num=s2.getSum()-s1.getSum(); //要从高到底排序

                int num1= num== 0 ?s1.getYWscore()-s2.getYWscore():num; //当总分相同时按照语文成绩排序

                int num2= num1== 0 ?s1.getName()测试数据pareTo(s2.getName()):num1;

                return num2;

            }

        });

        //创建学生对象

        Student s1= new Student( "张三" , 56 , 66 );

        Student s2= new Student( "张四" , 70 , 69 );

        Student s3= new Student( "张五" , 80 , 76 );

        Student s4= new Student( "张六" , 66 , 96 );

        Student s5= new Student( "张七" , 66 , 96 );

        ts.add(s5);

        ts.add(s1);

        ts.add(s2);

        ts.add(s3);

        ts.add(s4);

        //遍历

        for (Student ss:ts){

            System.out.println(ss.getName()+ "," +ss.getYWscore()+ "," +ss.getYYscore()+ "," +ss.getSum());

        }

    }

}

 到此这篇关于Java案例使用比较排序器comparator实现成绩排序的文章就介绍到这了,更多相关comparator实现成绩排序内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

原文链接:https://HdhCmsTestcnblogs测试数据/CYan521/p/16073313.html

查看更多关于Java案例使用比较排序器comparator实现成绩排序的详细内容...

  阅读:22次