学习笔记 容器--collection--TreeSet类

三、TreeSet容器类
      3.1、TreeSet是一个可以对元素进行排序的容器。底层实际使用TreeMap实现的,内部维持了一个简化版的TreeMap,通过key来存储Set的元素。

      

      3.2、Tree内部需要对存储元素进行排序,因此我们要指定排序规则

      3.3、因为实现了collection接口所以也继承相关的方法,如add()


      3.4、排序规则实现方法
          1)、通过元素自身实现比较规则。

            Set<String> set=new TreeSet<>();//TreeSet的实例化

            set.add("d");

            set.add("c");

            set.add("b");

            set.add("a");

            set.add("a"); //不支持输入重复的数

            for (String st r: set)

                /** 输出会按照英文字典排序,因为String类里面继承了
                *接口Comparable<String>
                  */
                System.out.println(str);

              


          

          2)、通过比较器指定比较规则。

              我们需要创建一个比较器,比较器需要实现Comparator接口中的compare方法来实现比较规则            

            

            Set<User> set1=new TreeSet<>();    //因为User类是用户自己定义的类,所以只能用户自己在User类里实现Comparator接口中的compare方法来实现比较规则。

            User u1=new User(1,"温迪");

            User u2=new User(2,"神里绫人");

            set1.add(u1);

            set1.add(u2);


            for (User str1:set1) //需要改写User类才能输出

             System.out.println(str1);

 

                  

            public class User implements Comparable<User>{    //User继承Comparable<User>

              

              @Override

                public int compareTo(User o) {      //compare方法

                if (this.age<o.getAge())

                  return 1;

                if (this.age==o.getAge())    //如果年龄相等的话

                  return this.name.compareTo(o.getName());  //compareTo是String自带的

                 return -1;

               }

              

 

            }

           

 

      1%16 //当被除数小于除数时,商为0,余数为被除数本身 所以 ==1

posted @ 2022-03-31 15:07  苏欣然  阅读(42)  评论(0)    收藏  举报