Java集合篇
一、Java集合篇
2024/1/22
-
哈希冲突的解决方案:
哈希冲突是指输入两个不同的值,通过同一个哈希函数,得到一个相同的值;而HashMap是通过链表的方式来解决哈希冲突;
-
链地址法:在冲突的位置拉一个链表,把冲突的元素放进去;
-
开放定址法: 从冲突的位置上接着往下找,给冲突元素找个空位
-
-
HashMap的数据结构:
-
jdk8:采用的是:数组+链表+红黑树
-
数组用于储存数据,链表用于解决哈希冲突,红黑树用于提高查询的效率
-
-
HashMap扩容机制?何时进行扩容?扩容因子为什么是0.75?
-
为了减少哈希冲突,当hashmap的元素个数达到临界值时,就触发扩容机制
-
临界值=默认容量*默认扩容因子
-
hashmap初始默认容量为16,初始化容量是2的次幂,扩容之后的长度是之前的2倍,新的容量也是2的次幂,所以扩容机制是随着元素的增加,HashMap通过增大内部数组的容量和重新计算哈希值来保持高效的访问速度。同时,JDK8的优化使得在链表较长时能够通过红黑树提高查询效率。
-
-
出于对查询时间和存储空间成本两者之间的平衡考虑
-
如果扩容因子设置较大时,元素越多,而空位较少的时候才扩容,那么发生查询数据的时间就增加,增大了哈希冲突的概率。
-
-
-
想多了都是问题,做多了才是答案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性