HashMap详解

网友投稿 654 2022-11-20

HashMap详解

HashMap详解

hashmap特性hashmap 可以实现快速存取 key 允许为null非同步 线程不安全底层时hash表负载因子是0.75hashmap 的底层实现原理底层时数组加链表 put get存取对象 当执行put 方法时 , 先对键值计算hashcode()得到它在bucket数组的位置。获取对象时,先得到bucket的位置 在调用equals 找到需要的值。put 方法的流程

计算机hashcode判断hash表是否为空发生碰撞放到散列表里去hashcode 值相同 三种情况

equals 判断是否有相同 相同就替换红黑树就调用红黑树的插入方法链表就在尾部插入 如果插入链表个数为8 就转变为红黑树

如果满了就扩容。

hashmap 什么时候需要扩容

通过判断数组容量是否大于0 判断数组是否初始化过没有初始化

是否初始化默认大小是否初始化容量扩容两倍将元素重新运算复制到新的散列表中

5.谈一下hashMap中get是如何实现的?对key的hashCode进行hashing,与运算计算下标获取bucket位置,如果在桶的首位上就可以找到就直接返回,否则在树中找或者链表中遍历找,如果有hash冲突,则利用equals方法去遍历链表查找节点。hashmap 和 hashtable 的区别

相同点

都是key-value 存储

HashMap允许Key-value为null,hashTable不允许;hashMap没有考虑同步,是线程不安全的。hashTable是线程安全的,给api套上了一层synchronized修饰; 3. hashmap 的初始容量是16 hashtable 的初始容量是 11 (2*n+1) 4. hashmap 自定义的hash算法 hashtable 没有自定义hash算法

loadfactor

表示hash 表的拥挤程度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Date和字符串进行转换
下一篇:laravel group by errors
相关文章

 发表评论

暂时没有评论,来抢沙发吧~