[数据结构]TreeSet的条件筛选

要求排序:比较数语外成绩,如果相同则往后推进

java 复制代码
import java.util.TreeSet;

public class Main{
    public static void main(String[] args){
        //创建学生对象
        Student s1 = new Student("zhangsan",23,90,99,50);
        Student s2 = new Student("lisi",21,75,78,39);
        Student s3 = new Student("wangwu",26,23,53,21);
        Student s4 = new Student("zhaoliu",25,65,34,78);

        //创建集合
        //希望数据唯一的话用set 默认用hashset
        //希望用唯一又希望排序的话 就用Treeet
        TreeSet<Student> ts = new TreeSet<>();
        //3.添加元素
        ts.add(s1);
        ts.add(s2);
        ts.add(s3);
        ts.add(s4);
        //这里要先指定排序规则
        System.out.println(ts);
    }
}
java 复制代码
public class Student implements Comparable<Student>{
    private String name;
    private int age;
    private int chinese;
    private int math;
    private int english;

    public Student() {
    }

    public Student(String name, int age, int chinese, int math, int english) {
        this.name = name;
        this.age = age;
        this.chinese = chinese;
        this.math = math;
        this.english = english;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return chinese
     */
    public int getChinese() {
        return chinese;
    }

    /**
     * 设置
     * @param chinese
     */
    public void setChinese(int chinese) {
        this.chinese = chinese;
    }

    /**
     * 获取
     * @return math
     */
    public int getMath() {
        return math;
    }

    /**
     * 设置
     * @param math
     */
    public void setMath(int math) {
        this.math = math;
    }

    /**
     * 获取
     * @return english
     */
    public int getEnglish() {
        return english;
    }

    /**
     * 设置
     * @param english
     */
    public void setEnglish(int english) {
        this.english = english;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + ", chinese = " + chinese + ", math = " + math + ", english = " + english + "}";
    }

    @Override
    public int compareTo(Student o) {
        //比较两者的总分
        int sum1=this.getChinese()+this.getMath()+this.getEnglish();
        int sum2=o.getChinese()+o.getMath()+o.getEnglish();
        int i =sum1-sum2;
        i = i==0?this.getChinese()-o.getChinese():i;
        i = i==0?this.getMath()-o.getMath():i;
        i = i==0?this.getEnglish()-o.getEnglish():i;
        i = i==0?this.getAge()-o.getAge():i;
        i = i==0?this.getName().compareTo(o.getName()):i;
        return i;
    }
}
相关推荐
TeamDev1 分钟前
JxBrowser 9.0.0 版本发布啦!
java·前端·混合应用·jxbrowser·浏览器控件·跨平台渲染·原声输入
AI人工智能+电脑小能手26 分钟前
【大白话说Java面试题】【Java基础篇】第24题:Java面向对象有哪些特征
java·开发语言·后端·面试
geovindu43 分钟前
go: Strategy Pattern
开发语言·设计模式·golang·策略模式
27669582921 小时前
阿里最新acw_sc__v2 分析
开发语言·python·acw_sc__v2·acw_sc__v2逆向·acw_sc__v2算法·acw_sc__v2算法分析·cookie逆向
dog2501 小时前
圆锥曲线和二次曲线
开发语言·网络·人工智能·算法·php
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第25题:JDK1.8的新特性有哪些
java·开发语言·后端·面试
likerhood1 小时前
SLF4J: Failed to load class “StaticLoggerBinder“ 解决
java·log4j·maven
开发小程序的之朴1 小时前
基于Go语言的企业级CMS系统架构设计与性能分析——以AnQiCMS为例
开发语言·golang·系统架构
早日退休!!!1 小时前
大模型推理瓶颈七层分析模型
java·服务器·数据库
叶小鸡2 小时前
Java 篇-项目实战-天机学堂(从0到1)-day9
java·开发语言