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指针,从而指向下一个值(拉链法解决哈希冲突)

 

posted @ 2024-01-10 13:33  mc宇少  阅读(54)  评论(0编辑  收藏  举报