A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

刘俊宏

初级黑马

  • 黑马币:24

  • 帖子:8

  • 精华:0

© 刘俊宏 初级黑马   /  2019-9-26 13:38  /  600 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自然排序Comparable
TreeSet的排序由comparable接口的compareTo方法返回的int值确定,0表示与根节点相同,不予存储;正数表示比根节点数据大,存在右节点;负数表示比根节点数据大,存在左节点package Set925.TreeSetDemo;public class Student implements Comparable<Student>{    private String name;    private int age;    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 Student(String name, int age) {        this.name = name;        this.age = age;    }    public Student() {    }    @Override    public int compareTo(Student o) {        int num=this.age-o.age;        int num2=num==0?this.getName().compareTo(o.getName()):num;        return num2;    }}package Set925.TreeSetDemo;import java.util.TreeSet;public class TreeSetDemo {    public static void main(String[] args) {        Student s1=new Student("王昭君",18);        Student s2=new Student("貂蝉",16);        Student s3=new Student("西施",17);        Student s4=new Student("杨玉环",20);        Student s5=new Student("小乔",18);        TreeSet<Student> ts=new TreeSet<>();        ts.add(s1);        ts.add(s2);        ts.add(s3);        ts.add(s4);        ts.add(s5);        for(Student s:ts){            System.out.println(s.getName()+s.getAge()+"岁");        }    }}
比较器排序Comparator
package Set925.ComparatorDemo;public class Student {    private String name;    private int chinese;    private int math;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getChinese() {        return chinese;    }    public void setChinese(int chinese) {        this.chinese = chinese;    }    public int getMath() {        return math;    }    public void setMath(int math) {        this.math = math;    }    public Student(String name, int chinese, int math) {        this.name = name;        this.chinese = chinese;        this.math = math;    }    public Student() {    }    public int getSum(){        return chinese+math;    }}
package Set925.ComparatorDemo;import java.util.Comparator;import java.util.TreeSet;public class Test {    public static void main(String[] args) {        TreeSet<Student> ts=new TreeSet<>(new Comparator<Student>() {            @Override            public int compare(Student o1, Student o2) {                int num=o1.getSum()-o2.getSum();                int num2=num==0?o1.getName().compareTo(o2.getName()):num;                return num2;            }        });        Student s1=new Student("wangzhaojun",99,98);        Student s2=new Student("diaochan",98,99);        Student s3=new Student("xishi",95,96);        Student s4=new Student("yangyuhuan",100,97);        Student s5=new Student("xiaoqiao",96,99);        ts.add(s1);        ts.add(s2);        ts.add(s3);        ts.add(s4);        ts.add(s5);        for(Student s:ts){            System.out.println(s.getName()+":"+s.getChinese()+":"+s.getMath()+":"+s.getSum());        }    }}
在TreeSet集合中熟练Comparable和Comparator方法。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马