[数据结构]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;
    }
}
相关推荐
程序员黑豆5 小时前
Java字符串详解
java·前端·ai编程
m0_720245016 小时前
1543.统计好三元组(简单)
开发语言·算法
EntyIU6 小时前
NFS离线部署
java
叠层归一研究院7 小时前
AGI 系统(八):符号范畴嵌入函子 — SymCat ↪ C_M107 严格化
c语言·开发语言·人工智能·算法·transformer·agi
明朝百晓生7 小时前
Deep RL learning[2026/8]
开发语言·javascript·人工智能
weixin-a153003083168 小时前
python-装饰器
开发语言·python
我的xiaodoujiao8 小时前
快速学习Python基础知识详细图文教程17--类型注解和断点调试
开发语言·python·学习·测试工具
OH_TPC9 小时前
HarmonyOS APP开发---“滤镜大师“图像处理App,需要用到这个库
java·图像处理·华为·harmonyos·鸿蒙
wabs6669 小时前
关于图论【最短路径之Bellman_ford 算法(单源有限最短路)|卡码网96.城市间货物运输III的思考】
数据结构·算法·图论·卡码网·bellman_ford·单源有限最短路
leoZ23110 小时前
AI 辅助开发的五道坎
开发语言·人工智能·视觉检测·bert·php·超分辨率重建·openvino