• 2022-08-06 学习日记(26th day)集合框架---Set


    目录

    Set集合:

    HashSet集合:

    LinkedHashSet集合:

    TreeSet集合:

    重写compareTo方法:


    Set集合:

    Collection接口:

            List:有顺序,元素可以重复,顺序指的是添加的先后顺序

            Set:没有顺序(没有按照添加的顺序排列),元素不可以重复,顺序值的是添加的先后顺序         

            所谓的不能重复,默认情况下比较的是地址,引用数据类型重复还是可以添加的          eg:set.add(new x("",""));

    那么:

            Set集合如何确保数据的不重复:确保数据类型的类要重写hashCode和equals方法。

    Set其实是有顺序的,内部其实是有一个专门排列的算法。

    1.所谓的无序不等于随机

    2.所谓的无序指的是没有按照添加的先后顺序,但其实内部是做了排序的。

            内部结构:哈希表:由数组+链表+红黑树组成。

    HashSet集合:

    1. HashSet集合底层采用了哈希表这种数据结构
    2. HashSet在实例化时,底层实际实例化了个HashMap
    3. 往HashSet集合中存储元素,实际存放到了HashMap集合的key部分

    LinkedHashSet集合:

    基本与HashSet一样

    与HashSet的区别和联系:

    H是L的父类,H内部结构复杂,L的结构就是链表但是实现Set接口

    对HashSet的拓展:添加数据的同时维护数据的添加顺序,但也仅仅如此,你还是取不出来

                                    操作数据的效率略低。

    TreeSet集合:

    可以排序的Set集合

    排序的规则:你要排序的对象的类必须实现Comparable接口

    1. TreeSet集合继承了SortedSet接口的特点(无序不可重复可自动排序)
    2. TreeSet集合底层采用了二叉树这种数据结构
    3. TreeSet在实例化时,底层实际实例化了个TreeMap
    4. 往TreeSet集合中存储元素,实际时存放到了TreeMap集合的key部分

    重写compareTo方法:

    为什么要重写compareTo方法,什么时候要重写compareTo方法

    重写compareTo方法是为了在创建引用对象时,防止TreeSet集合把所有引用对象当成重复的,就默认只存储一个

    想自定义排序规则,或用引用数据类型防止重复时。

    重写:

    1. @Override
    2. public int compareTo(Person p) {
    3. //自己写排序规则
    4. if(this.id>p.id){
    5. return -1;//大的往前去
    6. }
    7. if(this.id.equals(p.id)){
    8. return 0;
    9. }
    10. if(this.id
    11. return 1;//小的往后去
    12. }
    13. return 0;
    14. }

    为什么return返回的是1,0,-1:

    compareTo方法返回的是int型:

    负数-1:代表比较的两个值调用者小

    0:两个值相等

    正数1:比较的两个值大。

    ps:负数代表:调用者往前去,正数往后去,0不动.

  • 相关阅读:
    论不使用除rsa之外的任何其他模块实现RSA加密解密,以及密钥存储
    计算机毕业设计之java+javaweb青少年体质健康数据管理与分析系统
    Visual Studio 中的键盘快捷方式大全
    rk3568 SDK的buildroot添加package
    30天入门Python(基础篇)——第4天:Python中的【输入】+【数据类型】的认识(万字建议点赞收藏)
    不同应用选择荧光染料 -CY7 ALK脂溶性Sulfo-Cyanine7 alkyne 结构式应用
    Nosql redis高可用和持久化
    一个好用的k8s代理工具——KtConnect
    攻防世界做题
    Nodejs内置模块process
  • 原文地址:https://blog.csdn.net/weixin_49627122/article/details/126201840