如果OrderedDictionary不能满足你的需求仅仅是因为它不是通用的-那么你可以使用the version here that provides a generic equivalent。如果有其他原因不能为你工作,更新你的帖子,我们可以寻找一个更好的选择。 虽然你可以创建自己的List<KeyValuePair<string,string>>,但你将失去按键高效搜索的选项,现在,你当然可以自己实现一个有序的doctionary,将list/dict结合在一起......但是我链接到的帖子已经做到了这一点。
5条答案
按热度按时间tez616oj1#
虽然我已经晚了一些,但是.NET Framework 4.5为您提供了新的类。请参见
SortedList<TKey, TValue>
或SortedDictionary<TKey, TValue>
。如果您不知道应该使用哪一个,MSDN提供了一些很好的理由来说明您为什么要选择其中一个。SortedList泛型类是一个检索时间为O(log n)的键/值对数组,其中n是字典中的元素数。在这点上,它与SortedDictionary泛型类相似。这两个类具有相似的对象模型,检索时间都为O(log n)。这两个类的不同之处在于内存使用以及插入和删除的速度:
SortedList<TKey, TValue>
使用的内存比SortedDictionary<TKey, TValue>
少。SortedDictionary<TKey, TValue>
对未排序数据的插入和移除操作速度更快,为O(log n),而SortedList<TKey, TValue>
为O(n)。SortedList<TKey, TValue>
比SortedDictionary<TKey, TValue>
快。SortedDictionary<TKey, TValue>
和SortedList<TKey, TValue>
类之间的另一个区别是,SortedList<TKey, TValue>
支持通过Keys和Values属性返回的集合对键和值进行高效的索引检索。访问属性时不必重新生成列表,因为列表只是键和值的内部数组的 Package 。这两个链接都有类似的注解部分(这是引用的来源)。它们也有关于这两个类的更多信息。如果你有兴趣使用其中的一个,我建议你阅读这两个部分。
nwsw7zdq2#
使用
List<KeyValuePair<T,T>>
就可以了,它们是按照插入的顺序存储的,每次你添加到它里面,最新的一个就会被添加到列表的末尾。所以
如果要按顺序拉出它们,只需用途:
或
hjqgdpho3#
OrderedDictionary
是你想要的,如果你需要键控和插入序列访问项目...它实际上只是一个哈希表和列表的组合。它提供了一种方法,通过插入索引或键访问其中的项目。它是.NET中唯一一个这样做的集合。遗憾的是,它不是通用的。如果
OrderedDictionary
不能满足你的需求仅仅是因为它不是通用的-那么你可以使用the version here that provides a generic equivalent。如果有其他原因不能为你工作,更新你的帖子,我们可以寻找一个更好的选择。虽然你可以创建自己的
List<KeyValuePair<string,string>>
,但你将失去按键高效搜索的选项,现在,你当然可以自己实现一个有序的doctionary,将list/dict结合在一起......但是我链接到的帖子已经做到了这一点。kyks70gy4#
您可能希望使用
Queue<T>
来滚动一个,其中T是KeyValuePair<string, string>
,这是一个更可靠的契约,显式地保证了插入顺序。http://msdn.microsoft.com/en-us/library/7977ey2c.aspx
qjp7pelc5#
你应该只能够使用
List<KeyValuePair<string,string>>
。我实际上在MSDN文档中找不到声明插入顺序是有保证的,但这是一个相当安全的赌注...