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

wordpress目录upgrade/南昌搜索引擎优化

wordpress目录upgrade,南昌搜索引擎优化,seo排名赚app,wordpress 福利吧主题一:为什么HashMap的长度必须是2^n? 首先,如果想要元素散列在一个长度之内,可以直接使用模运算,使用取余数的方法。但是如果想要提高计算机的运算效率,可以使用位运算。通过对 “长度”-1 进行与运算&#…

一:为什么HashMap的长度必须是2^n?

首先,如果想要元素散列在一个长度之内,可以直接使用模运算,使用取余数的方法。但是如果想要提高计算机的运算效率,可以使用位运算。通过对 “长度”-1 进行与运算,一样可以达到散列的效果,从而把元素散列在固定长度之内。但是该“长度”必须要满足一个条件,而该条件就是我们的2^n。

二:为什么符合2^n就可以达到散列效果?

首先,我们需要了解2^n的二进制结构:最高位是1,其余为都是0,如2^3 = 1000;

那么(2^n) - 1 实际就是1000-0001 = 111,也就是说(2^n) - 1 的二进制结构是n个1(该特点是下面所有规律的基础!!!)

1.第一种情况:当i<=(2^n) - 1,则(2^n) - 1&i=i。因为随便一个位置上无论是0还是1,只要&1,则还是自己,而(2^n) - 1二进制结构是n个1,所以(2^n) - 1&i=i。比如3&7 = 011&111 = 001;

2.第二种情况当i>(2^n) - 1时,实际i中高于(2^n) - 1最高位之后的数是不用看的,比如9&7,即1001&0111,9的最高位其实是不用看的,因为无论是0与1,与上0后都是0.也就相当于001&111,那么就转化为情况1了。

因此:对一个满足(2^n) - 1的数做与运算,就可以达到散列的效果。那么问题又来了,为什么不直接把容量设定成(2^n) - 1,而是2^n呢?因为长度为2^n,对map扩容移动元素也有很大的效率提升

三:长度为2^n如何提升对map扩容移动元素的效率?(默认大小是16,每一次扩容为原来的2倍)

首先下个结论:

1.如果key的最高位是1,新位置 = 原来的位置+原来数组的长度

2.如果key的最高位是0,新位置 = 原来的位置

为什么?

首先扩容的大小是原来的两倍,具体到二进制就是最高位左移了一位。如1000扩容2倍后就会变成10000,而扩容后对应的(2^n) - 1实际就是比原来多了一个1,如为扩容前是111,扩容后就是1111

(1)那么原来的key如果最高位是1,就相当于多了2^(n-1),而2^(n-1)不就是扩容前map的长度吗?比如9&7 = 1001&0111 = 0001;扩容后,就变成了1001&1111 = 1001,也就是多了最高位的1(可以理解为一张试卷太简单,限制了学霸的发挥,拉不开差距,换个区分度更高的题目,学霸就起飞了);

(2)如果原来的key最高位是0时,比如3&7 = 011&111 = 011;扩容后变成0011&1111 = 0011,即没变(可以理解为即使换了一张试卷,对于学渣来说,还是没有什么变化呀!不会的题还是不会做!)

 其实原理还是因为扩容后最高位是1,即原来的数最高位是什么,该最高位与上1还是他自己

 因此:如果直接让长度为(2^n)-1,如果保证扩容后依然满足(2^n)-1?办法当然有,但是还不如直接让长度为2^n来得方便且高效些

简而言之:HashMap的长度为2^n的原因有二:一是为了实现元素的散列;二是为了HashMap扩容后,更方便地计算出原有元素扩容后的位置

最后:附上后端技术交流圈,欢迎各位大佬入圈交流技术......V:ff1341658(先添加好友后拉群,添加好友时请备注:小白不黑)

http://www.lbrq.cn/news/1531297.html

相关文章:

  • 站长查询域名/百度推广登录手机版
  • 长沙模板建站平台/广州:推动优化防控措施落地
  • 什么是网站html静态化/东莞百度推广优化排名
  • 网站怎么建设/游戏推广是什么工作
  • 网站建设服务是什么意思/百度浏览器app下载
  • 成都企业品牌网站建设/长沙seo霸屏
  • 企业管理网站/东莞哪种网站推广好
  • 外贸免费自助建站平台/青岛百度推广优化
  • 宝鸡政府网站建设公司/站长素材音效下载
  • 西安广告公司网站建设/百度推广助手客户端
  • 邯郸媒体网络营销诚信合作/seo站长平台
  • 苏州 ebcart 网站开发/友情链接平台赚钱吗
  • 怎么做虚拟的网站/36优化大师下载安装
  • 网站做投票系统/二十条优化措施
  • 通辽建设公司网站/百度官网电话客服24小时
  • 做直播网站赚钱/央视新闻的新闻
  • 网站怎么做二维码/市场调研报告
  • 创建一个网站/建站工具
  • 网站建设公司做销售好不好/sem投放是什么意思
  • 湖北工程建设总承包有限公司网站/全网霸屏推广系统
  • 中国人事建设部网站/新型网络搜索引擎
  • 如何查询网站是哪家公司做的/女生读网络营销与电商直播
  • 网站设计前期沟通单/如何优化关键词的方法
  • seo是什么服/关键词快速优化排名软件
  • 如何做转发文章赚钱的网站/营销网站建设价格
  • 昆明网站制作方案/宁波seo博客
  • 本溪建网站/广州排名推广
  • yii2框架做的网站有哪些/南京百度竞价推广公司排名
  • 网站多语言建设方案/百度西安
  • 给网站做排名优化学什么好处/百度手机助手网页
  • ODDR实现多bit单边沿采样数据转为多bit双沿采样数据
  • (认识异常)
  • Linux Shell 常用操作与脚本示例详解
  • 【Linux系统】匿名管道以及进程池的简单实现
  • 《CDN加速的安全隐患与解决办法:如何构建更安全的网络加速体系》
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(17):文法+单词第5回3-复习