Ror*_*ker 5 .net collections enumeration key
我认为我不能指望为枚举目的添加到字典中的项目的顺序.
是否有一个类(通用,如果可能),可以使用键添加项目,并且可以按顺序枚举或可以通过键检索?
澄清:我不想按照关键顺序进行枚举.我想按顺序枚举.这就是说我希望能够通过FIFO(先进先出)的枚举来检索项目.
首先,根据您的主要假设,您是正确的。普通字典不保证枚举的顺序。
其次,您需要谨慎选择SortedDictionary自定义IComparer路线。比较器用于键相等以及对集合进行排序。也就是说,使用IComparer基于加法顺序的元素,您可能很难从SortedDictionary键值中检索元素,它可能最终会丢失在树中(这是排序字典的支持)。
如果您愿意走 C5 通用类库路线,如果 T 是自密钥的,您可以从HashedLinkedList<KeyValuePair<T>>或中获得一些不错的效果。HashedLinkedList<T>您可以创建一个IEqualityComparer对密钥进行操作以生成哈希码的密钥。然后检索实际值,您可以使用Find(ref T x)原型 x (可能只设置了键),它将找到存储的值T并通过引用返回该值,时间为O (1) ,而使用 a 的时间为O ( log n ) SortedDictionary。同样,在 a 的支持下LinkedList,保证按加法顺序进行枚举(并且您可以通过 C5 指定您喜欢的方向IDirectedEnumerable)。
希望有帮助。
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |