《哈希表是什么?哈希表数据结构详细资料分析》由会员分享,可在线阅读,更多相关《哈希表是什么?哈希表数据结构详细资料分析(1页珍藏版)》请在金锄头文库上搜索。
1、哈希表是什么?哈希表数据构造具体资料分析我所写的这些数据构造,都是比较经典的,也是面试中经常会消灭的,这篇文章我就不闲扯了,全是干货,假设你能读完,期望对你有所挂念哈希表也称为散列表,是依据关键字值key value而直接进展访问的数据构造。也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度。这个映射函数称为哈希函数也称为散列函数,映射过程称为哈希化,存放记录的数组叫做散列表。比方我们可以用下面的方法将关键字映射成数组的下标:arrayIndex=hugeNumber%arraySize那么问题来了,这种方式对不同的关键字,可能得到同一个散列地址,即同一个数组下标, 这种现象
2、称为冲突,那么我们该如何去处理冲突呢?一种方法是开放地址法,即通过系统的方法找到数组的另一个空位,把数据填入,而不再用哈希函数得到的数组下标,由于该位置已经有数据了;另一种方法是创立一个存放链表的数组,数组内不直接存储数据,这样当发生冲突时,新的数据项直接接到这个数组下标所指的链表中,这种方法叫做链地址法。下面针对这两种方法进展争辩。1. 开放地址法1.1 线性探测法所谓线性探测,即线性地查找空白单元。我举个例子,假设 21 是要插入数据的位置,但是它已经被占用了,那么就是用 22,然后 23,以此类推。数组下标始终递增,直到找到空白位。下面是基于线性探测法的哈希表实现代码:publicclassHashTable privateDataItem hashArray; /DateItem 类是数据项,封装数据信息privateint arraySize;privateint itemNum; /数组中目前存储了多少项privateDataItem nonItem; /用于删除项的publicHashTable() arraySize = 13;