• 韩顺平java课程527 -531速记笔记


      

    527

    LinkedHashSet底层是一个LinkedHashMap,

    底层维护了一个 数组+双向链表

    link代表链表

    hashset的子类

    LinkedHashSet

    根据元素的hashcode值来决定元素的存储位置

    维护元素的次序

    (使其想顺序插入)

    放在了不同的索引上

    构建了双向链表

    好处:可以有顺序

    使其有序

    528

    Head

    Tail

    先求hash值、再求索引、确定元素在table的位置、将元素添加到双向链表

    插入和遍历数据一样

    数组table就是16

    存放的结点类型

    可以看到这里他们之间有继承关系

    存放的数据/元素

    Linkedmapentry

    Entry

    继承了什么,继承关系

    entry类型,里面有before 和 after

    双向链表

    继承关系

    内部发生的,继承关系在内部类完成

    但可以看到它的索引位置都是不同的

    感觉有些像是在嵌套的感觉

    529

    530

    treeset跟后面的差不多

    双列

    set底层存放的是key与value

    利用常量来替代的

    由上至下的顺序

    Jdk8的map接口特点

    Key value

    (保存双列元素)

    封装到hashmapnode中

    静态内部类

    value是可以重复的

    number不在同一个链表上

    等价于替换

    大部分用string做key

    但是不是一定要用string做key

    因为我们经常用key

    没有这个说法

    New.object也可以

    Map.get

    传入一个key

    含义是什么

    通过get方法,传入一个key,

    会返回对应得value

    使用get方法,得到value

    531

    追一下源码

    Putval

    一对k-v,就是entry

    key放在set结合

    value放在collection放在接口实现子类

    Hashmapnode 由set和collection指向

    听蒙圈

    其他老师讲的很混乱

    将其整一个源码来分析

    写一段代码

    而一个entry对象就有k,v ,EntrySet>

    Entryset

    key放在set集合

    简单的指向

    entryset里面放的是一个一个的entry

    而entry还是指向node

    里面entry是向上转型

    定义的类型是一个mapentry,但是实际上存放的还是一个还是hashmap$node

    提供了重要的方法

    getKey getVal

    1.先做一个向下转型

    Map.entry

    hashmap放在entry

    将node - entry - entryse

    都是指向node

    直观看出指向关系

    entry

    table表里面的node结点

    等于entryset没有什么关系

    Set 里面还有一个keyset方法

    将其提取出来

      

        

  • 相关阅读:
    从计算机视觉算法实训走向落地尝试
    【强化学习论文合集】ICRA-2022 强化学习论文 | 2022年合集(六)
    Vue3 企业级优雅实战 - 组件库框架 - 2 初始化 workspace-root
    武忠祥每日一题知识点总结
    仅仅只是用脱虚向实或者脱实向虚来诠释和表达产业互联网是不全面的
    mac常见问题(五) Mac 无法开机
    Java项目:SSM学生选课管理系统
    Vulnhub | DC: 8 |【实战】
    解决wget下载过慢的问题
    惠普发布最新财报,对AIPC寄予厚望
  • 原文地址:https://blog.csdn.net/m0_62574889/article/details/126861134