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分析完毕