• TreeSet的使用和底层实现


     TreeSet底层实际是用TreeMap实现的,内部维持了一个简化版的TreeMap,通过key来存储Set的元素。 TreeSet内部需要对存储的元素进行排序,因此,我们对应的类需要实现Comparable接口。这样,才能根据compareTo()方法比较对象之间的大小,才能进行内部排序。

    【示例】TreeSet和Comparable接口的使用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    public class Test {
        public static void main(String[] args) {
            User u1 = new User(1001"高淇"18);
            User u2 = new User(2001"高希希"5);
            Set<User> set = new TreeSet<User>();
            set.add(u1);
            set.add(u2);
        }
    }
     
    class User implements Comparable<User> {
        int id;
        String uname;
        int age;
     
        public User(int id, String uname, int age) {
            this.id = id;
            this.uname = uname;
            this.age = age;
        }
        /**
         * 返回0 表示 this == obj 返回正数表示 this > obj 返回负数表示 this < obj
         */
        @Override
        public int compareTo(User o) {
            if (this.id > o.id) {
                return 1;
            else if (this.id < o.id) {
                return -1;
            else {
                return 0;
            }
        }
    }

    使用TreeSet要点:

          (1) 由于是二叉树,需要对元素做内部排序。 如果要放入TreeSet中的类没有实现Comparable接口,则会抛出异常:java.lang.ClassCastException。

          (2) TreeSet中不能放入null元素。

  • 相关阅读:
    webpack中Entry与Output的基础配置
    使用plugins让打包更便捷
    使用loader打包静态文件-样式2
    nginx 静态文件支持跨域访问权限
    Python代码规范
    HUD2087
    codevs1404字符串匹配
    codevs3013单词背诵
    bzoj1584[Usaco2009 Mar]Cleaning Up 打扫卫生
    codevs1690开关灯
  • 原文地址:https://www.cnblogs.com/huaxiansheng/p/15317784.html
Copyright © 2020-2023  润新知