美文网首页
哈希表概述

哈希表概述

作者: 仲达_dc6c | 来源:发表于2018-12-04 11:08 被阅读0次

    数组的优点是能够快速的查询

    链表的优点是快速的插入和删除

    将这数组和链表的有点结合到一起,就出现了哈希表。

    哈希表由两个部分组成

    hash函数:哈希表能否快速定位,很大程度就是取决于hash函数,hash函数的好坏决定了哈希表的性能。

    hashTable:存放数组的表,就是hashtable。

    不同的key,经过hash函数之后,寻址出来的位置可能是同一个,在hashtable的同一个位置,就是产生了冲突,JDK1.8之前解决冲突的办法是在数组的位置,放了一个链表,就是拉链法。JDK1.8之后,当链表的个数达到阈值之后,在当前的数组位置放了一个红黑树,红黑树的定位比链表更快。

    装填因子:

    它是hash函数和数组的大小,产生冲突的解决方案。因为数据越是接近数组的大小,越容易产生冲突,产生冲突就越多,装填因子可以自己进行设定,0.75 0.8都可以。

    缺点:

    扩容的时候,需要重新计算,重新hash计算每个节点,在新的hashtable中的位置。

    应用:

    微信通讯录,电话号码,QQ的好友数量都是有上限的。

    什么样的哈希表是最好的?

    没有冲突的哈希表最好,如果有冲突,每个数组下面的原数个数一样多。

    相关文章

      网友评论

          本文标题:哈希表概述

          本文链接:https://www.haomeiwen.com/subject/ctcmcqtx.html