• TreeSet的运用之使用内部比较器实现自定义有序(重要)


    Student.java

    package com.sxt.set3;
    /*
     * TreeSet:有序
     * implements Comparable<Student> 
     * 如果用内部比较器TreeSet必须是实现Comparable接口来实现有序 否则会出现报错:com.sxt.set4.Student cannot be cast to java.lang.Comparable
     * 使用泛型是为了在重写compareTo()方式时,object不用强制转换类型
     */
    //内部比较器:在类内重写比较规则即compareTo()方法
    public class Student implements Comparable<Student> {
        private String name;
        private int age;
        private double salary;
        public Student(String name, int age, double salary) {
            super();
            this.name = name;
            this.age = age;
            this.salary = salary;
        }
        public Student() {
            super();
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public double getSalary() {
            return salary;
        }
        public void setSalary(double salary) {
            this.salary = salary;
        }
        @Override
        public String toString() {
            return "Student [name=" + name + ", age=" + age + ", salary=" + salary + "]";
        }
        //内部比较器之排序规则 按年龄
        @Override
        public int compareTo(Student o) {
            
            return this.age - o.age;
        }
        
    }

    TestStudent.java

    package com.sxt.set3;
    /*
     * TreeSet
     */
    import java.util.Set;
    import java.util.TreeSet;
    
    public class TestStudent {
        public static void main(String[] args) {
            Set<Student> arr = new TreeSet<>();
            arr.add(new Student("bbb", 21, 532.2));
            arr.add(new Student("ccc", 32, 32.2));
            arr.add(new Student("ddd", 11, 352.2));
            arr.add(new Student("aaa", 15, 32.2));
            //遍历
            for(Student s:arr){
                System.out.println(s);
            }
    //        按照内部比较器按年龄排序结果:
    //        Student [name=ddd, age=11, salary=352.2]
    //        Student [name=aaa, age=15, salary=32.2]
    //        Student [name=bbb, age=21, salary=532.2]
    //        Student [name=ccc, age=32, salary=32.2]
    
        }
    }
  • 相关阅读:
    记一次擦窗机器人项目的拯救
    基于超声波的四轴定高控制简析
    秋夜
    还能再来过?
    机器人设计之一简单机械设计
    管理之殇
    C++11笔记<一>
    Android开发的菜鸟小记
    程序员客栈与DaoCloud这两家企业联手后,运维工程师要失业了!
    关爱码农成长:关于写代码二三事
  • 原文地址:https://www.cnblogs.com/qingfengzhuimeng/p/6744293.html
Copyright © 2020-2023  润新知