最近我一直在使用SortedList(key,value),但是我想知道它与KeyedCollection(key,value)有什么不同,除了明显的排序部分。
例如,如果我正在构建一个类,它需要按项检索项的功能,并且排序不那么重要,那么下面哪一个选项更好?:
谢谢。
发布于 2014-12-05 10:47:10
KeyedCollection是一个抽象类-您必须创建从KeyedCollection派生的类型("MyKeyedDictionary"),并且必须指定它将如何从TValue (重写TKey GetKeyForItem(TValue)方法)中提取TKey。
因此,当您将值添加到MyKeyedDictionary时,您必须只指定TValue (并且您的类将在幕后提取TKey。
KeyedCollection的另一个不同之处在于它将其数据存储在HashTable和List中的场景后面,但SortedList只将数据存储在列表中(实际上是两个列表--一个存储键,另一个存储值)。当然,它是按密钥存储的)
因此,SortedList不是关于排序值,而是关于快速查找。主要的问题是,它的任何修改都是缓慢的。但是有一个很好的替代方案,它也有很好的修改速度--而且那个替代方案是SortedDictionary。它还提供快速查找,但也有良好的修改性能。
P.S. SortedDictionary将密钥存储在平衡树中,我不确定这与存储在排序列表中的SortedList键在查找速度上的比较。但据我所读-两者都提供快速查找。
https://stackoverflow.com/questions/16742917
复制相似问题