-
哈希表(Hash Table)其实也叫散列表,是一个数据结构。
-
哈希表本质上就是一个数组,只不过数组存放的是单一的数据,而哈希表中存放的是键值对(key - value pair)。
-
key 通过哈希函数(hash function)得到数组的索引,进而存取索引位置的值。
-
不同的 key 通过哈希函数可能得到相同的索引值,此时,产生了哈希碰撞。
-
通过在数组中插入链表或者二叉树,可以解决哈希碰撞问题。
引言
哈希这个词想必大家经常听到,这也说明了它使用的频繁程度,HashMap 和 HashTable 都与哈希这个词有关系。那哈希是什么,要搞清楚它,我们得先来说下哈希表。
什么是哈希表?
哈希表(Hash Table) 是一种用于存储 键值对 的基本数据结构。在 C++ 中,哈希表使用 哈希函数 来计算数组的索引,进而存取数组中对应索引位置的值。
百科定义:
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。