HashMap实现原理:

1.基本原理

对象经由hashcode(),计算出hash值,

hash值再经过hash算法,计算出下标index值,

一般数组默认16位,如果计算出的位置没有值,则将entity存入,

                                如果计算出的位置有值(hash碰撞),则形成链表

对链表里的每个元素进行equals()对比,如果equal则进行元素替换,

                                                               如果不equal则将新元素插入链表

2.数组默认16位,当使用位置达到75%后,进行扩容,扩容后所有元素重新hash运算,重新分布

3.java8以后,hashmap改动:

  1)链表新增元素,由原来的加在表头,变为加载表尾

  2)当形成的链表满足:单个链表长度>8 && 总元素书>64时,链表变为红黑树

  3)红黑树,除了新增元素,其他操作效率均提高

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

友情链接更多精彩内容