![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
集合底层源码
文章平均质量分 76
鬼罚olo
天生我材必有用,快乐打工不会痛!!!
展开
-
Hashmap源码解读
变量一定义序列化id,使其可以序列化变量二// aka 16集合的初始化容量变量三扩容最大范围值2^30次方变量四扩容因子初始大小0,75变量四链表的初始长度,超过8时将会转为红黑树变量五hash桶,当超过这个值时将会转为链表变量六桶结构转化为红黑树的数组容量最小值。...原创 2022-08-04 19:15:38 · 132 阅读 · 0 评论 -
HashMap(1)
注意插入结点,必须为红色,理由很简单,红色在父结点(如果存在)为黑色结点时,红黑树的黑色平衡没被破坏,不需要做自平衡操作,但如果插入结点是黑色,那么插入位置所在的子树黑色结点总是多1,破坏了红黑树的黑高性质,必须做自平衡。要找最小值,先找根的左节点,然后一直找这个左节点的左节点,直到没有左节点,那么这个节点就是最小值,同理要找最大值,一直找根节点的右节点,直到没有右节点,则就是最大值。遍历树是根据一种特定的顺序访问树的每一个节点,比较常用的有前序遍历,中序遍历和后序遍历。而二叉搜索树最常用的是中序遍历。..转载 2022-07-31 16:13:35 · 140 阅读 · 0 评论 -
简单手动实现Map
简单手动实现Map。转载 2022-07-27 16:20:56 · 119 阅读 · 0 评论 -
LInkedList底层源码
然后进行循环依次增加,靠for循环遍历数组,依次指向节点的插入操作,进行类型转换,如果前置节点为空,则newNode为头节点,否则为pred的next的节点。首先建立一个新的节点,并以头节点为后继节点,然后进行判断,如果链表尾空,则last也指向该节点,否则,将头节点的前去指针指向新节点,也就是指向前一个元素。尾部的后置节点一定是null,前置节点是队尾,如果不在链表的末端,在链表的中间,则取出index节点,并作为后继节点,index的前节点,作为节点前驱。说了这么多,这一堆方法到底有什么区别?...转载 2022-07-27 15:42:20 · 107 阅读 · 0 评论 -
ArrayList底层分析
内部构造方法内存修减扩容规则传值扩容判断对列表进行扩容,判断最小长度,并进行相应大小扩容返回列表长度判断是否为空,为空则返回0查找元素是否包含在数组中的索引判断索引是否大于0.如果大于0,则数据存在看是否输入元素在列表的最后进行列表克隆将集合转为数组查询时集合输入位置进行查询,进行查询看是否超出集合的长度,如果超过,抛出异常返回当前位置的元素根据索引返还元素向list装入新的元素根据泛型对象向集合中添加元素根据泛型对象按某个位置顺序向集合中添加元素集合对特定位置元素进原创 2022-07-14 16:18:14 · 280 阅读 · 0 评论