HashMap底层实现?

在JDK1,.8之前:

HashMap底层采用的是数组加链表也就是链表散列的方式来实现的。数组是HashMap的主体,而链表是为了解决冲突而存在的。HashMap通过key的hashcode值,然后再经过hash函数,得到当前元素要存放的位置。接下来判断该位置是否存在元素,如果存在元素,就判断hash值和key值是否相同,如果相同的话,就直接覆盖。如果不相同,就采用拉链法来解决冲突。

所谓的拉链法就是将数组和链表结合在一起。每次有冲突的话,就将元素放到冲突的链表当中。

JDK1.8之后:

HashMap底层发生了比较大的变化,采用的是红黑树。当链表的长度大于阈值(一般设置为8),就将链表转化成红黑树,减少搜索的时间。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容