Dictionary原理(转)
原文:【C#】三分钟,深入理解C# 哈希表(Dictionary)_c# dictionary 为什么会hash冲突-CSDN博客
1.哈希函数:将key转成hashcode,这个hashcode还要和字典的count取余,确保索引落到桶数组中。
2.哈希桶:用来解决哈希冲突的链表、没有冲突一个桶对应一个entry(有key、value,真正的数据),有冲突就是一个链表。
对于C#中的Dictionary,具体实现如下:
1.最小数据单元式一个叫Entry的结构体。用entry数组存放元素。
2.bucket数组用于存放hash桶。
3.调用Add的时候,会根据Key生成一个hashcode,根据这个hashcode去决定该数据所在的桶。每个桶会存放一个整型值,这个值指向桶中存放的第一个元素(真正数据都在entry数组中).entry中的每一个值都有next指针,从而指向下一个值(拉链法解决哈希冲突)