天真胡萝卜

文章
6
资源
0
加入时间
2年10月17天

C# 中Hashtable 源码详解

HashTable并不是泛型类型,使用object类型会给值类型带来装箱拆箱的压力。构造函数HashTable内部维护了一个桶数组,一个桶可以保存一组键值对。桶数组在初始化时,容量并不一定等于传入的capacity值, 而是会选择一个小于该值的最大质数作为数组大小。同样的,在进行扩容时,也是先按目前大小×2,然后选择一个小于该结果的最大质数作为新数组容量。为什么哈希表的大小要用质数呢?主要是因为一般采用模运算来获取元素存放地址:index = hashcode % length。.