Bor*_*ens 7 .net c# collections
.net中是否有一个集合允许存储KeyValuePair<string, string>保持插入顺序?
OrderedDictionary看起来很有前景,但似乎相当缺乏.
现在我正在研究IOrderedEnumerable>,但我似乎找不到除了ISortedDictionary之外的任何实现,但这不是我想要的.不需要进行排序,只需插入顺序很重要.
更新
我不喜欢OrderedDictionary的原因是它不是通用的.
OrderedDictionary如果您需要键入和插入顺序访问项目,那么您就想要它...它实际上只是哈希表和列表的组合.它提供了一种通过插入索引或按键访问其中项目的方法.它是.NET中唯一一个这样做的集合.可悲的是,它不是通用的.
如果OrderedDictionary不能完全满足您的需求,因为它不是通用的 - 那么您可以使用此处提供通用等效项的版本.如果还有其他原因导致它不适合您,请更新您的帖子,我们可以寻找更好的选择.
虽然你当然可以创建自己的,但List<KeyValuePair<string,string>>你将无法有效地按键搜索.现在,您当然可以推出自己的有序doctionary的实现,将list/dict组合在一起......但我链接到的帖子已经这样做了.
虽然我迟到了,但.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)具有更快的插入和删除操作,而不是O(n)SortedList<TKey, TValue>.- 如果列表是从排序数据中一次性填充的,
SortedList<TKey, TValue>则速度快于SortedDictionary<TKey, TValue>.
SortedDictionary<TKey, TValue>和SortedList<TKey, TValue>类之间的另一个区别是SortedList<TKey, TValue>支持通过Keys和Values属性返回的集合对键和值进行有效的索引检索.访问属性时没有必要重新生成列表,因为列表只是内部键和值数组的包装器.
两个链接都有类似的备注部分(引用来自的地方).他们还为这两个班级提供了更多信息.如果您有兴趣使用其中一个,我建议您阅读这两个部分.
只是用List<KeyValuePair<T,T>>.它们按插入顺序存储.每次添加时,最新的一个都会添加到列表的末尾.
所以
var list = new List<KeyValuePair<String,String>>();
list.Add(new KeyValuePair<String,String>("",""));
Run Code Online (Sandbox Code Playgroud)
如果你想将它们拉出来,只需使用:
list.ForEach(x=>...);
Run Code Online (Sandbox Code Playgroud)
要么
foreach(var item in list){
...}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8441 次 |
| 最近记录: |