Java案例使用比较排序器comparator实现成绩排序
需求:用TreeSet
集合存储多个学生信息(姓名,语文成绩,数学成绩),并遍历该集合;要按照总分从高到低进行排序
分析:
- 1.创建学生类 成员变量 姓名,语文成绩、数学成绩;成员方法 求总分;构造方法 无参构造,带参构造;
get\set
方法 - 2.创建测试类
- 3.创建
TreeSet
集合对对象,并使用内部类的方式重写compare
方法
要定好排序规则,主要条件按照总分从高到底排序,在总分相同的情况下按照语文成绩排序,在两者都相同的情况下判断姓名是否相同,相同就不存储,不相同存进来,按照姓名字母进行排序
- 4.创建学生对象,并使用带参构造添加学生数据
- 5.使用
add
方法将学生数据加入到TreeSet集合中 - 6.进行遍历
代码实现:
Student类
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; } }
测试类
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().compareTo(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实现成绩排序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java判断object对象为空(包括null ,““)的方法
这篇文章主要介绍了Java判断对象是否为空(包括null ,“”)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-12-12C#使用MySQLConnectorNet和MySQLDriverCS操作MySQL的方法
这篇文章主要介绍了C#使用MySQLConnectorNet和MySQLDriverCS操作MySQL的方法,相比普通方法能够在Windows下简化很多操作步骤,需要的朋友可以参考下2016-04-04java中catalina.home与catalina.base区别点整理
在本篇文章里小编给大家整理的是关于java项目中catalina.home与catalina.base区别点,需要的朋友们可以学习下。2020-02-02JavaEE SpringMyBatis是什么? 它和Hibernate的区别及如何配置MyBatis
这篇文章主要介绍了JavaEE Spring MyBatis是什么? 它和Hibernate的区别有哪些?如何配置MyBatis?本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-08-08Spring ApplicationContext接口功能详细介绍
ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等2023-02-02
最新评论