关于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。
(由于本人水平有限,理解或者描述的地方可能有误,希望能予以指正)