[数据结构]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;
    }
}
相关推荐
xiaowu08033 分钟前
C# task任务异步编程提高UI的响应性
开发语言·c#
kill bert3 小时前
Java八股文背诵 第四天JVM
java·开发语言·jvm
低头专研4 小时前
Markdown标题序号处理工具——用 C 语言实现
c语言·开发语言·typora·markdown文件标题编号·md文件标题序号
刚入门的大一新生6 小时前
C++初阶-C++入门基础
开发语言·c++
你是理想6 小时前
wait 和notify ,notifyAll,sleep
java·开发语言·jvm
helloworld工程师6 小时前
【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
java·eclipse·tomcat·maven
Java&Develop6 小时前
idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊
java·ide·intellij-idea
forestsea6 小时前
Python进阶编程总结
开发语言·python·notepad++
q567315236 小时前
使用Java的HttpClient实现文件下载器
java·开发语言·爬虫·scrapy
Marzlam7 小时前
一文读懂数据结构
数据结构