zoukankan      html  css  js  c++  java
  • Java TreeSet集合 比较器排序Comparator的使用

    比较器排序Comparator的使用

    • 存储学生对象,并遍历,创建TreeSet集合使用带参构造方法
    • 要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序

    结论

    • 用TreeSet集合存储自定义对象,代参构造方法使用的是“比较器排序”对元素进行排序的;
    • 比较器排序,就是让集合构造方法接收Comparator实现类对象,重写compareTo(T O1,tO2)方法; 3、重写方法时,一定注意排序规则,必须按照要求的主要条件和次要条件来写
    //TreeSetDemo.java
    /*比较器排序Comparator的使用
        1、存储学生对象,并遍历,创建TreeSet集合使用带参构造方法
        2、要求,按照学生年龄从小到大排序,如果年龄相同,则按照姓名的字母循序排序
      结论
        1、用TreeSet集合存储自定义对象,代参构造方法使用的是“比较器排序”对元素进行排序的;
        2、比较器排序,就是让集合构造方法接收Comparator实现类对象,重写compareTo(T O1,tO2)方法;
        3、重写方法时,一定注意排序规则,必须按照要求的主要条件和次要条件来写
    *
    * */
    import java.util.Comparator;
    import java.util.Iterator;
    import java.util.TreeSet;
    
    public class TreeSetDemo {
        public static void main(String[] args) {
            //创建TreeSet集合对象
            TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
                @Override
                public int compare(Student s1, Student s2) {
                    int num = s1.getAge() - s2.getAge();//按照年龄有小到大排序
                    //如果年龄相同,则根据姓名的字母循序排序(采用三元运算符进行比较)
                    int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
                    return num2;
                }
            });
            //创建学生对象
            Student s1 = new Student("linqingxia", 35);
            Student s2 = new Student("zhangmanyu", 30);
            Student s3 = new Student("wangzuxian", 36);
            Student s4 = new Student("liudehua", 30);
            Student s5 = new Student("zhourunfa", 34);
            Student s6 = new Student("zhourunfa", 34);
            //将学生添加到集合
            ts.add(s1);
            ts.add(s2);
            ts.add(s3);
            ts.add(s4);
            ts.add(s5);
            ts.add(s6);
    
            //采用迭代器遍历集合,
    /*        Iterator<Student> it = ts.iterator();
            while(it.hasNext()){
                Student s = it.next();
                System.out.println(s.getName()+":"+s.getAge());
    
            }*/
            //采用增强for遍历集合
            for (Student s : ts) {
                System.out.println(s.getName()+":"+s.getAge());
            }
        }
    }

     Student.java

    public class Student {
        //定义成员变量
        private String name;
        private int age;
        /*无参构造方法
        * 1、与类同名,且没有返回值,甚至连void都没有
        * 2、构造出类的实例,且对实例进行初始化
        * 3、用new创建对象,且完成对象进行初始化
        * */
        public Student() {
    
        }
    
        //有参构造方法
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
        public String getName(){
            return name;
        }
        public int getAge(){
            return age;
        }
    }
  • 相关阅读:
    最实用的logback讲解(2)—appender
    深入理解lombok
    idea(三)最值得安装的几款插件
    idea(二)初次安装强烈建议修改的配置
    swagger2的使用和swagger2markup离线文档的生成(最简单的方式)
    maven(一) 基础知识
    maven(二)pom文件详解
    ubuntu下jdk的安装
    maven(三)最详细的profile的使用
    profile之springboot
  • 原文地址:https://www.cnblogs.com/henrypaul/p/12316018.html
Copyright © 2011-2022 走看看