hashmap的hash冲突及解决办法,java hashmap 冲突

  hashmap的hash冲突及解决办法,java hashmap 冲突

  

目录

1.哈希算法和哈希表2。哈希冲突3。有四种方法可以解决哈希冲突4。4的优化。1.8版中的散列表

 

  00-1010了解哈希冲突。先了解哈希算法和哈希表。

  哈希算法就是通过哈希算法把任意长度的输入变成固定长度的输出。输出结果是一个哈希表,也称为“哈希表”,是一种通过键直接访问内存存储位置的数据结构。在具体实现中,我们通过hash函数将键映射到表中的某个位置,获取这个位置的数据,从而加快数据查找的速度。

  

1. Hash算法和Hash表

哈希冲突是由于哈希算法,计算出来的数据是无限的,但是计算出来的结果范围是有限的,总会有不同的数据,计算出来的值是相同的,所以这种情况下就会发生所谓的哈希冲突。

 

  00-1010开放寻址法又称线性检测法,是从发生冲突的位置开始,按照一定的顺序从哈希表中寻找一个空闲位置,然后将冲突的元素存储在这个位置。在java中,ThreadLocal使用线性检测方法来解决哈希冲突。

  如图,当key=name存储在哈希表索引1的位置,然后在上面加上key=hobby,假设计算出的索引也是1,那么此时就会出现哈希冲突,而open和open寻址的方法就是向前找一个空位置,以便存储这个冲突的键。

  链式寻址法,这是一种常用的方法,简单理解就是把有哈希冲突的键存储在单向链表中,比如HashMap。

  如图,有冲突的键直接存储在单向链表中。

  哈希法,即由一个哈希函数计算出的密钥,当有冲突时,可以用另一个哈希函数对密钥进行哈希,直到没有冲突为止。这种方法会增加计算时间,对性能有一定影响。

  公共移除区的建立,意味着哈希表分为基本表和利益表两部分,所有冲突元素都放入利益表。

  1.8版本中的

2. Hash冲突

HashMap通过链寻址和红黑树来解决哈希冲突问题,其中红黑树用于优化哈希表长链表带来的时间复杂度增加的问题。当链表的长度大于等于8,哈希表的容量大于64时,向链表添加元素会触发链表到红黑树的转换。

 

  关于如何解决Java HashMap中的哈希冲突的这篇文章到此为止。有关Java HashMap哈希冲突的更多信息,请搜索以前关于流行IT的文章或继续浏览下面的相关文章。我希望你以后能更多地支持流行音乐!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: