![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
集合
文章平均质量分 63
掌握集合中各个数据结构的用法,理解它们的底层原理。
家师曹先生
这个作者很懒,什么都没留下…
展开
-
单列集合Collection
List接口的常用实现类:Vector:线程安全,方法使用 synchronized 修饰,速度很慢。ArrayList:底层使用数组实现,线程不安全,查询速度快。LinkedList:底层使用链表实现,线程不安全,插入删除速度快。SynchronizedList:位于 Collections 集合工具类中的静态内部类,使用 synchronized 代码块实现同步操作,线程安全,效率比Vector稍有提升(毕竟进入方法本身就要分配资源的)。原创 2022-10-05 14:09:20 · 1251 阅读 · 0 评论 -
HashMap底层分析_数组扩容
1. resize()方法主要用于对数组进行初始化 或 扩容。2. 初始化:HashMap底层数组初始化采用延时机制,被推迟到put()方法中,但主要还调用resize()方法来完成。HashMap底层数组初始化两种情况,创建HashMap对象时:指定初始容量 和 不指定初始容量。如果指定初始容量,则这个初始化容量会被tableSizeFor()方法进行调整,以确保数组长度一定为2的整数幂。不指定初始容量,则使用默认初始化容量16原创 2021-10-07 16:56:42 · 356 阅读 · 0 评论 -
HashMap底层分析_put添加元素
1. 调用HashMap的put方法 (内部调用了putVal()、hash()两个方法)。2. 执行hash函数,将计算出来的hash值传入putVal方法中。3. 执行putVal方法 (对着源码 和 这个流程图验证以下,就很容易看懂了。最好是,看着源码自己画一遍流程图)。4.执行完putVal后,我们的key-value就插入成功了 (执行完后,会return一个value值,如果key以存在,就会return已存在key对应的value值。如果key不存在,则返回null)。原创 2021-10-06 00:54:09 · 284 阅读 · 0 评论 -
HashMap底层分析_计算hash值
当我们向HashMap容器中put一个元素时,这个元素会被放到一个Node结点对象中,结点对象又会被放入到数组中,那么结点对象会被放入数组的什么位置呢?这是由key的hash值来决定的。hash值,就是用来确定结点对象,在数组中存储位置的索引。...原创 2021-10-04 16:50:37 · 1888 阅读 · 0 评论