当前位置:   article > 正文

说一下 HashMap 的实现原理?_.说一下 hashmap 的实现原理?

.说一下 hashmap 的实现原理?

微信搜索《Java鱼仔》,每天一个知识点不错过

(一)每天一个知识点

说一下 HashMap 的实现原理?

(二)结论

(2.1)HashMap的特点

HashMap底层是一个哈希表,以数组加链表的形式存储值。HashMap具有以下特点:

1.HashMap允许key和value为空

2.HashMap是线程不安全的

3.HashMap的初始容量为16,负载因子大小为0.75

4.在jdk7.0中,底层是数组加链表;在jdk8.0中,底层是数组加链表加红黑树

(2.2)HasnMap的put操作

HashMap中维护了Node类型的数组table,当HashMap创建对象时,设置负载因子为0.75,table还是null。

当第一次添加元素时,将table的容量设置为16,临界值设置为12

每次添加元素调用putVal方法:

1.将key的hash值和table容量-1进行与运算,得到索引值

2.判断该存放位置上是否有元素,如若没有元素则直接放上去;如果该索引位置已存在元素,则继续判断

3.如果该位置的元素和添加元素相等,则直接覆盖,如果不相等,则继续判断是链表结构还是树状结构,按照相对应的方式添加。

如果添加的数量大于临界值,执行resize方法对容量双倍扩容。并打乱顺序重新排列。

(三)再多学一点

我专门写了一篇博客对HashMap、HashTable、TreeMap的底层源码进行分析和对比,大家可以看下:
java集合深入理解(五):HashMap、HashTable、TreeMap的底层源码分析和对比

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/282406
推荐阅读
相关标签
  

闽ICP备14008679号