哈希表

哈希表,又叫做散列表,在golang中叫做Map。这种数据结构提供了键(key)和值(value)的映射关系。只要给出一个key,就可以高效查找到它所匹配的value,时间复杂度接近于O(1)。

首先golang的哈希表又称为map,这个数据结构的优势在于读写性能都是O(1)的。同时拥有数组和链表的优势。

哈希表是key-value形式,本质上是一个数组。在对key进行哈希函数处理后,得到一个整型索引,实现Key和数组下标的转换,从而和value对应。

实现哈希表的关键在于哈希函数的选择,很大程度上决定了哈希表的读写性能。在理想情况下,哈希函数应该能够将不同键映射到不同的索引上,这要求哈希函数输出范围大于输入范围,但是由于键的数量会远远大于映射的范围,所以在实际使用时,这个理想的结果是不可能实现的。
哈希表
比较实际的方式是让哈希函数的结果能够尽可能的均匀分布,然后通过工程上的手段解决哈希碰撞的问题,但是哈希的结果一定要尽可能均匀,结果不均匀的哈希函数会造成更多的冲突并导致更差的读写性能