当前位置: 首页 > news >正文

本溪 网站建设 做网站网站运营推广选择乐云seo

本溪 网站建设 做网站,网站运营推广选择乐云seo,鞍山信息港二手车,郑州市做网站公司a汉狮HashMap中的put()和get()的实现原理: map.put(k,v)实现原理 首先将k,v封装到Node对象当中(节点)。 然后它的底层会调用K的hashCode()方法得出hash值。 通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上…

在这里插入图片描述

HashMap中的put()和get()的实现原理:

map.put(k,v)实现原理

首先将k,v封装到Node对象当中(节点)。
然后它的底层会调用K的hashCode()方法得出hash值。
通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。如果说下标对应的位置上有链表(哈希碰撞)。此时,就会拿着k和链表上每个节点的k进行equal。如果所有的equals方法返回都是false,那么这个新的节点将被添加到链表的末尾。如其中有一个equals返回了true,那么这个节点的value将会被覆盖。

map.get(k)实现原理

先调用k的hashCode()方法得出哈希值,并通过哈希算法转换成数组的下标。
通过上一步哈希算法转换成数组的下标之后,在通过数组下标快速定位到某个位置上。如果这个位置上什么都没有,则返回null。如果这个位置上有单向链表,那么它就会拿着K和单向链表上的每一个节点的K进行equals,如果所有equals方法都返回false,则get方法返回null。如果其中一个节点的K和参数K进行equals返回true,那么此时该节点的value就是我们要找的value了,get方法最终返回这个要找的value。

为何随机增删、查询效率都很高的原因是?

原因: 增删是在链表上完成的,而查询只需扫描部分,则效率高。
注: HashMap集合的key,会先后调用两个方法,hashCode and equals方法,这这两个方法都需要重写。
为什么放在hashMap集合key部分的元素需要重写equals方法?
因为equals方法默认比较的是两个对象的内存地址

哈希碰撞概述

在调用HashMap的put(key k,value v)方法时,若key的哈希值相等了,则发生哈希碰撞(冲突);
此时,若equals()比较相等,则表示key相同,判断元素相同,会执行覆盖操作;若equals()不相等,则形成链表,追加到链表末尾;
当链表长度等于8时,优化为红黑树结构(jdk1.8开始优化为红黑树),当调用remove(key k)方法删除元素时,剩余6个的时候,退回链表结构;
③.判断table[i]的首个元素是否和key一样,如果相同直接覆盖value,否则转向④,这里的相同指的是hashCode以及equals;

如何避免哈希碰撞

避免哈希碰撞,就要尽量让key的hash值不相同,key的hash值和map的容量有很大关系,容量越大越不容易发生碰撞。
所以避免哈希碰撞的有效方式就是:扩容,
当map扩容后,size发生改变,所有的key的hash值,都会通过reHash重新计算

扩展

因此,我们在扩充HashMap的时候,不需要像JDK1.7的实现那样重新计算hash,只需要看看原来的hash值新增的那个bit是1还是0就好了,是0的话索引没变,是1的话索引变成“原索引+oldCap”,可以看看下图为16扩充为32的resize示意图.

http://www.mmbaike.com/news/105395.html

相关文章:

  • 网站建设流程与步骤百度推广开户多少钱一个月
  • 免费商标设计软件汕头网站优化
  • 网站后台banner更换网络推广大概需要多少钱
  • 网站建设考试试题百度广告语
  • 深圳很多90后做虚假彩票网站诈骗网站内容编辑
  • 网站优化怎样做站长网站提交
  • 起名网站是怎么做的搜索引擎营销方案例子
  • 网站开发无形资产互换链接的方法
  • 精品源码南宁seo手段
  • 宜宾做网站公司百度网站关键词排名查询
  • 国外英语写作网站百度总部投诉电话
  • 医药b2b网站有哪些seo优化外包公司
  • wordpress 网址图标seo整站优化解决方案
  • 网站建设实训总结app拉新佣金排行榜
  • 企业网站建设及维护宁德市自然资源局
  • iis 如何新建网站百度指数搜索指数的数据来源
  • 网站建设kaodezhuchrome 谷歌浏览器
  • 网站后台模板 仿cnzz东莞网络推广托管
  • 重庆网站推广外包企业百度云网盘资源链接
  • 如何个网站做二维码杭州seo教程
  • 疫情最新数据消息昆明地图快速seo软件
  • 营业执照咋做网等网站做网络销售感觉自己是骗子
  • 从wordpress迁移zblog排名优化公司哪家效果好
  • 亚马逊卖家做自己网站新网站 seo
  • 软件dw做网站b2b免费发布信息平台
  • 股权变更要在工商局网站做吗小程序运营推广公司
  • 给企业建设网站的意义百度代发收录
  • 做免费外贸网站百度百科推广费用
  • 做书的网站有哪些内容网络推广是什么工作内容
  • 其它区便宜营销型网站建设网站怎样被百度收录