关于C#中Hashtable、Dictionary、SortedDictionary、SortedList的理解

本文通过类比书籍的不同排版方式,探讨了Hashtable、Dictionary、SortedDictionary和SortedList这四种集合类型的特点与应用场景。从数据结构的角度分析了它们在内存管理、查询效率及新增操作上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Hashtable、Dictionary、SortedDictionary、SortedList的定义和说明我就不复述了网上可以找到很多,我只想谈谈我对他们的一点理解不喜勿喷,水平有限有错误的地方希望能予以纠正。

Hashtable、官方理解请上msdn,我的理解最本质的hash算法实现的集合,就像一本书,我们可以通过目录和序号快速定位到要查找的内容,假设这本书是可变长的,当内容饱和到一定程度(达到饱和因子),需要重新定做一本书(重新分配一块内存),这本书的厚度是第一本书的两倍,书的内容全部复制过来,但是目录和序号不会,需要重新排版(重新进行hash算法)。

Dictionary、官方理解请上msdn,这个是Hashtable的变种,Dictionary这种类型的书在达到饱和时也需要重新定做一本书,不同于Hashtable的是它不需要排版了 (hash算法),直接全部复制过去。

SortedDictionary、SortedList这两种类型的书和上面的两种不一样,在排版这两种书的时候,刚开始是没有内容的,每次有内容的时候会在原有的内容上增加而且目录只能给出一个区间不会具体到每页,所以每次都需要找商人买纸(向系统请求分配内存)而Hashtable、Dictionary每次都是把达到饱和的书卖给收废纸的,每次都是批量买纸,用不完也放在那里虽然浪费了纸张但是节约了时间,SortedDictionary、SortedList则是反之。

总结:查询效率上Dictionary肯定是最快的,但是相对于Hashtable前者缺少了一些灵活性。重点是新增操作上,SortedDictionary、SortedList虽然都是二叉树结构,但我认为每次操作还是会进行重新分配内存的操作,所以还是没有Dictionary效率高。我猜想使用到SortedDictionary、SortedList的场景主要还是看重它们的Sort。

(由于本人水平有限,理解或者描述的地方可能有误,希望能予以指正)

以上内容均属原创,若要转载请注明出处。

转载于:https://www.cnblogs.com/nengge/p/3636090.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值