• 韩顺平java 515-520即时笔记


    515linkedlist源码分析

    crud增删改查

    为什么要看源码,是他的底层实现逻辑与方法

    Remove(指定删除位置)

    默认删除的是第一个linkedlist.remove( )

    //first = next

    516 list集合

    选择哪一个,根据自己的业务来进行合理选择

    不涉及到线程的问题

    517set接口方法

    1.没有索引

    2.最多一个null

    已有的实现子类

    直接有哪些常用的方法

    518hashset全面说明

    清晰继承实现

    数据不能重复

    hashset实际上是hashmap(即不保证存放元素的顺序和取出顺序一致)

    学习是一个认知的过程

    hashset不嫩添加相同的元素/数据

    519数据链表模拟

    形成了有三个节点的链表

    存储大于64以后,那么其会变为一颗红黑树

    数组+链表结构

    (存储效率会很高)

    520hashset扩容

    通过hash值-》转化成索引值

    找到存储表

    table观察是否为空

    如果有调用equals(比较内容还是对象,你自己可以重写)

    如果相同,放弃添加

    Java8 ,如果一条链表的元素个数超过了treeify threshold默认(8)

    转换条件:

    单条链表到8;(满足救护转成红黑树)

    数组>=64;

    先将数组扩容,两倍一扩

    插曲(评论区有人说PHP是最好的编程语言)

    特点:

    2.语法简单

    3.方便项目开发,开发周期短

    E 是泛型

    Present hashset里面的一个东西

    占位

    hash(kay)确定表里面的位置

    Hashcode 无符号

    得到你得到的这个hash值

    跳出来之后,step into

    该方法,会执行hashkey方法

    得到key对应的hash值

    hash值不是hashcode,因为还有处理

    PutVal

    定义辅助变量

    tab辅助变量

    Hashmap table放node结点

    加一个注释

    类型是node数组

    继续往下追

    resize到底是怎么走的

    返回的是new table,16个大小

    计算tab索引表的哪一个地方存在

    扩容到16个空间

    key存放在哪一个索引位置

    分辨哪个hash,是否一样

    放在该位置

     在3的位置存了一个node,直接接了一个链表

    指针是空

    AfterNodeInsertion为了让hashmap

    实现有效的双向链表

    返回空代表成功

    拥有了一个数据

    到此为止,第一次add分析完毕

  • 相关阅读:
    Python获取 小黑子 弹幕数据+制作词云分析.........
    接口框架第二篇—unittest/pytest 有什么区别
    git操作流程与清单
    企业选择ai智能电话机器人的好处
    基于协同滤波的个性化推荐算法matlab仿真
    Java 中代码优化的 30 个小技巧(上)
    重编译 microsip 和 pjsip 支持 mp3 录音
    在window和Linux上使用docker安装RocketMQ
    excel函数从0到掌握
    洛谷P1084 树上问题,思维,贪心,二分答案
  • 原文地址:https://blog.csdn.net/m0_62574889/article/details/126808205