首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SortedList对KeyedCollection

SortedList对KeyedCollection
EN

Stack Overflow用户
提问于 2013-05-24 20:11:47
回答 1查看 435关注 0票数 1

最近我一直在使用SortedList(key,value),但是我想知道它与KeyedCollection(key,value)有什么不同,除了明显的排序部分。

例如,如果我正在构建一个类,它需要按项检索项的功能,并且排序不那么重要,那么下面哪一个选项更好?:

  1. SortedList作为类的一个属性: 公共类MyClass {私有SortedList myList;} 或
  2. 扩展KeyedCollection 公共类MyClass:KeyedCollection{}

谢谢。

EN

回答 1

Stack Overflow用户

发布于 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键在查找速度上的比较。但据我所读-两者都提供快速查找。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16742917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档