以前一直觉得对于HashTable
,如果选用它的模数,应尽量选择素数或质数,但,深入考察这个问题后,觉得这个认识有待商榷
哈希表用途
在哈希表的key
,通过散列函数可以与查找位置有接近O(1)
的效率时,则哈希表相比较于平衡树型索引数据结构,就获得更高的效率。
其它场景,则需要根据索引类型的不同,进行具体选择评判,利用成熟的关系数据库系统做索引,则是一个很不错的选择!
天下无免费的午餐,在问题出现等概率的情况下,某个解决方案如果有一半适合,则有另外一半是不适合的。
那么面对的key
值概率空间,到底是什么样子的呢?
是需要深入考究的问题,是否存在某种模式或规律?!
哈希表的装填因子
float a = records/hashTableLen
直观上来看,当表中填入的记录数一定的情况下, 哈希表的长度越长,装填因子就越小,这样冲突的概率就越小。
具体阐释例子
假设hash
表的散列函数,通常使用取模的办法。
如果总共的记录数