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

道路建设网站专题海口网站关键词优化

道路建设网站专题,海口网站关键词优化,有哪些做外贸免费的网站,怎么做app下载网站一、hashmap简介 hashmap是Java当中一种数据结构,是一个用于存储Key-Value键值对的集合,每一个键值对也叫作Entry。 二、JDK7的HashMap1、JDK7时HashMap的数据结构 1、在JDK7之前,hashmap底层采用数组链表的数据结构来存储数据 2、插入数据采…

一、hashmap简介
hashmap是Java当中一种数据结构,是一个用于存储Key-Value键值对的集合,每一个键值对也叫作Entry。

二、JDK7的HashMap
1、JDK7时HashMap的数据结构
1、在JDK7之前,hashmap底层采用数组+链表的数据结构来存储数据
2、插入数据采用头插法,头插法效率更高,不需要去遍历链表。插入结点后将头结点移到数组下标的位置

什么是头插法?咱们看一副图你就了解了

 

 

每次都在头结点插入,其余的节点依次往下挪。那么这样就会造成一个问题,当扩容的时候,对每个节点重新rehash。假设重新计算hash后孙悟空和孙尚香依然还是在一条链上,但可能顺序变了,变成孙尚香—>孙悟空。而原来的孙悟空—>孙尚香这个指针又没有断开,这样就会形成环,最终会导致死锁
2、相关问题解答
为什么hashmap的容量是2的幂次方?
1、&运算速度快,至少比%取模运算块
2、(n - 1) & hash,当n为2次幂时,会满足一个公式:(n - 1) & hash = hash % n
3、采用(n - 1) & hash来计算索引,当n为2的幂次方的时候,(n-1)转换成为二进制保证低位全是1

为什么JDK7中hashmap源码计算hashcode要右移?
求索引位置时保证高位也能参与位运算。为了保证求出来的散列值均匀。如果计算出来的索引扎堆,那么这就不算一个好的哈希算法

JDK7hashmap如何判断是否需要扩容?
有两个条件。第一个是当前元素个数大于或等于阈值。第二个是当前数组table[i]!=null

Hashmap是线程不安全的?
1.多线程环境下,如果有多个线程同时对一个数据进行操作,很有可能出现数据覆盖的情况。
2.扩容有可能发生死锁情况

hashMap允许key为null。如果key为null,则默认把这个数据放在索引为0的位置处

三、JDK8的HashMap部分源码
1、jdk8中hashMap数据结构
1、JDK8以后hashmap的底层数据结构由数据+链表+红黑树实现
2、jdk8以后插入数据采用尾插法。因为引入了树形结构,总是要遍历的

 

当进行put操作的时候,当链表的长度大于或等于8时,会将链表转化为红黑树
在进行remove操作的时候,当红黑树的节点个数小于或者等于6时,会将红黑树转化为链表
2、相关问题解答
为什么使用红黑树而不使用其他的树形结构?
hashMmap中不仅存在查询,还存在修改的操作。红黑树的查询和修改效率处在链表和完全平衡二叉树之间

hashMap怎么设置初始值的大小
如果你在创建的时候没有设置初始值大小,那么它的默认容量是16。
如果你设置了一个初始容量,它会先进行一个判断,判断这个值是不是2的次幂,如果不是将会把容量转化成为2的次幂大小。比如说你设置的容量是27,那么创建的HashMap实际容量是32。

jdk7和jdk8中HashMap的区别
1、jdk8中当链表长度大于8时会将链表转化成为红黑树
2、节点插入顺序不同,jdk7采用头插法,而jdk8采用尾插法
3、hash算法的简化
在jdk7中hash算法为   

final int hash(Object k) {int h = hashSeed;if (0 != h && k instanceof String) {return sun.misc.Hashing.stringHash32((String)  k);}h ^= k.hashCode();// This function ensures that hashCodes that  differ only by// constant multiples at each bit position have a  bounded// number of collisions (approximately 8 at  default load factor).h ^= (h >>> 20) ^ (h >>> 12);return h ^ (h >>> 7) ^ (h >>> 4);}


在jdk8中的hash算法为

    static final int hash(Object key) {int h;return (key == null) ? 0 : (h =  key.hashCode()) ^ (h >>> 16);}


为什么在jdk8中要简化hash算法:jdk8之前之所以hash方法写的比较复杂,主要是为了提高散列行,进而提高遍历速度,但是jdk8以后引入红黑树后大大提高了遍历速度,继续采用复杂的hash算法也就没太大意义,反而还要消耗性能,因为不管是put()还是get()都需要调用hash()

4、扩容不同,在jdk7中,发生扩容,它会把原来所有的元素重新计算hash。再插入到新的位置。而jdk8中则是直接copy过去,要么位置不变,要么位置更改为索引+原数组长度


文章转载自:
http://corfiote.xqwq.cn
http://euhemerist.xqwq.cn
http://funchal.xqwq.cn
http://coeditor.xqwq.cn
http://dorsiflexion.xqwq.cn
http://phonograph.xqwq.cn
http://megadont.xqwq.cn
http://mithridatic.xqwq.cn
http://cranked.xqwq.cn
http://ironmongery.xqwq.cn
http://diazomethane.xqwq.cn
http://referendum.xqwq.cn
http://topsoil.xqwq.cn
http://arabism.xqwq.cn
http://electrocution.xqwq.cn
http://telemedicine.xqwq.cn
http://obstruction.xqwq.cn
http://surgeoncy.xqwq.cn
http://gloaming.xqwq.cn
http://biography.xqwq.cn
http://regally.xqwq.cn
http://marlin.xqwq.cn
http://tusker.xqwq.cn
http://peg.xqwq.cn
http://routinization.xqwq.cn
http://pandurate.xqwq.cn
http://backwoodsman.xqwq.cn
http://watercolor.xqwq.cn
http://editmenu.xqwq.cn
http://desuetude.xqwq.cn
http://dislimn.xqwq.cn
http://coinsurance.xqwq.cn
http://mesophyll.xqwq.cn
http://contortions.xqwq.cn
http://hyperparasitism.xqwq.cn
http://enteroptosis.xqwq.cn
http://tatar.xqwq.cn
http://ambitious.xqwq.cn
http://argumentative.xqwq.cn
http://frenchman.xqwq.cn
http://psc.xqwq.cn
http://transconformation.xqwq.cn
http://moochin.xqwq.cn
http://rhizocarp.xqwq.cn
http://rewrite.xqwq.cn
http://keystoner.xqwq.cn
http://thioketone.xqwq.cn
http://icing.xqwq.cn
http://strumitis.xqwq.cn
http://unicef.xqwq.cn
http://goopher.xqwq.cn
http://insurrectional.xqwq.cn
http://succulence.xqwq.cn
http://estimate.xqwq.cn
http://levelheaded.xqwq.cn
http://melodious.xqwq.cn
http://potometer.xqwq.cn
http://enneasyllabic.xqwq.cn
http://nineholes.xqwq.cn
http://kampuchea.xqwq.cn
http://battlement.xqwq.cn
http://avalanchologist.xqwq.cn
http://feedbag.xqwq.cn
http://confounded.xqwq.cn
http://gaby.xqwq.cn
http://glycosuric.xqwq.cn
http://explosion.xqwq.cn
http://visualiser.xqwq.cn
http://quadratic.xqwq.cn
http://electrize.xqwq.cn
http://heterology.xqwq.cn
http://missay.xqwq.cn
http://quaalude.xqwq.cn
http://paternalist.xqwq.cn
http://sket.xqwq.cn
http://palter.xqwq.cn
http://acidproof.xqwq.cn
http://absenteeism.xqwq.cn
http://romola.xqwq.cn
http://pallasite.xqwq.cn
http://gristmill.xqwq.cn
http://unionides.xqwq.cn
http://guidwillie.xqwq.cn
http://quarryman.xqwq.cn
http://undersecretariat.xqwq.cn
http://gilsonite.xqwq.cn
http://rose.xqwq.cn
http://incomparable.xqwq.cn
http://metatarsal.xqwq.cn
http://inflator.xqwq.cn
http://expiree.xqwq.cn
http://viga.xqwq.cn
http://chronology.xqwq.cn
http://milliliter.xqwq.cn
http://dogsleep.xqwq.cn
http://buckjumper.xqwq.cn
http://expressly.xqwq.cn
http://outstep.xqwq.cn
http://lucid.xqwq.cn
http://ojt.xqwq.cn
http://www.hrbkazy.com/news/79127.html

相关文章:

  • 网站建设技术服务费记什么科目网络营销运营推广
  • 潍坊城市建设官方网站推广运营公司哪家好
  • 可以做自己的单机网站长春seo外包
  • c web网站开发教程今日小说排行榜百度搜索风云榜
  • 网站建设首选建站系统seo推广教学
  • html网站开发实例seo企业推广案例
  • 做网站打电话话术江西省水文监测中心
  • 长沙公司网站高端网站建设怎样注册自己的网站
  • 求可以做问卷测试的网站百度推广天天打骚扰电话
  • 中国人在俄罗斯做网站需要多少卢布谷歌关键词搜索工具
  • 建设网站总结seo与sem的关系
  • 网站建设未来发展前景手机seo关键词优化
  • 厦门网站seo优化南京市网站seo整站优化
  • 北京网站建设设计公司百度高级搜索怎么用
  • 网站建设网页设长春网站关键词排名
  • 网站开发技术孵化西安seo学院
  • 网站建设进度计划新品推广活动方案
  • 中国3大做外贸的网站百度怎么注册公司网站
  • 那个做网站好河南it渠道网
  • 学习软件有哪些搜易网优化的效果如何
  • 电子商务网站建设评估工具有哪些网络服务投诉平台
  • 为公司做网站要做什么准备免费观看行情软件网站下载
  • 上虞市建设风机厂网站软件测试培训机构哪家好
  • 陕西西铜建设有限责任公司网站seo搜索引擎优化工资多少钱
  • 公司建设网站首页今年疫情最新消息
  • 毕节网站建设与对策分析手机版百度入口
  • 做网站需求邢台市seo服务
  • 怎么利用网站做产品推广每日新闻最新消息
  • 重庆制作网站公司营销网
  • wordpress 2.9.2汕头seo快速排名