蓝盟IT外包,Hash表是什么大数据?

发布者:上海IT外包 发布时间:2019/9/30 9:23:26来源:www.linemore.com

     大数据是哈希表,哈希是通常的翻译,是“哈希”,直接翻译为“哈希”是基于快速访问的角度设计的,也是典型的“时间空间”实践。顾名思义,此数据结构可以理解为线性表,但元素排列不紧密,但可能存在间隙。
  哈希表是什么大数据?
  1.哈希表(也称为哈希表)是一种根据键值直接访问的数据结构。
  也就是说,它通过将键值映射到表中的某个位置来访问记录以加快查找速度。此映射函数称为哈希函数,保存记录的数组称为哈希表。例如,我们存储70个元素,但是我们可以为这70个元素申请100个元素。 70/100=0.7,此数字称为负载(负载)系数。我们这样做是为了“快速访问”。我们基于固定函数H为每个元素安排存储位置,该函数尽可能随机地分布结果以实现快速访问。然而,由于这种随机性,不可避免地一个问题是冲突。所谓冲突,即两个元素通过哈希函数H获得相同的地址,然后将这两个元素称为“同义词”。这类似于有70个人要去一家有100把椅子的餐厅吃饭。哈希函数的结果是存储单元地址,每个存储单元称为“存储桶”。要设置具有m个存储桶的哈希表,哈希函数的值范围应为[0,m-1]。
  这些元素是按照什么样的规则存储到数组中呢。一般情况是通过hash(key)%len获得,也就是元素的key的哈希值对数组长度取模得到。比如上述哈希表中,12%16=12,28%16=12,108%16=12,140%16=12。所以12、28、108以及140都存储在数组下标为12的位置
  2.hash表扩容的理解
  可是当哈希表接近装满时,因为数组的扩容问题,性能较低(转移到更大的哈希表中).
  Java默认的散列单元大小全部都是2的幂,初始值为16(2的4次幂)。假如16条链表中的75%链接有数据的时候,则认为加载因子达到默认的0.75。HahSet开始重新散列,也就是将原来的散列结构全部抛弃,重新开辟一个散列单元大小为32(2的5次幂)的散列结果,并重新计算各个数据的存储位置。以此类推下去.
  负载(加载)因子:0.75.-->;
  哈希表提供的空间为16,这意味着当哈希表达到12时,它将扩展。
  3.减重机制的实施
  如果我们有一个数据(哈希代码76268),并且HashSet具有128个哈希单元,那么此数据将很可能插入到数组的第108个列表中(76268%128=108)。但这仅是可能的。如果在第108号链接列表中发现了旧数据,而新数据equals()=true,则新数据将被视为已添加,并且不会重复抛出到链表中。
  4.优势
  哈希表的插入和查找非常出色。
  对于直接根据哈希码的数据和哈希表数组大小计算进行搜索的33560,其余部分得到数组的位置,然后在列表中查找数据。因为数组本身是快速的,所以搜索效率会反映在链表中,但实际上,链表中的数据很少,有些甚至没有,因此几乎没有迭代成本。因此,哈希表的搜索效率基于哈希表所指向的链表中的数据量。
  插入:数组的插入速度较慢,而链表的插入速度较快。当我们使用哈希表时,我们不需要更改数组的结构。我们只需要找到对应的数组下标并输入对应的链表即可。是。因此,哈希表的总体插入速度也非常快。

 

上海IT外包服务网 链接:http://www.linemore.com

>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部