我们如何将Integer和Boolean键值对存储在无序集合中?
时间:2020-03-06 14:51:09 来源:igfitidea点击:
我需要在.NET中存储键值对(整数,布尔值)的列表
当我使用字典时,它会对其重新排序。是否有内置集合可以处理此问题。
解决方案
List<KeyValuePair<int, bool>> l = new List<KeyValuePair<int, bool>>(); l.Add(new KeyValuePair<int, bool>(1, false));
如果要保留插入顺序,为什么不使用队列?
http://msdn.microsoft.com/zh-CN/library/6tc79sx1(VS.71).aspx
字典对元素进行重新排序以加快查找速度。保留插入顺序会破坏该目的。
我们可以只创建一个KeyValuePairs列表:
var myList = new List<KeyValuePair<int, bool>>();
字典应该对它们进行重新排序,地图本身没有顺序的概念。
.Net中有一个支持该概念的类:
SortedDictionary<Tkey, Tvalue>
它要求Tkey类型实现IComparable接口,以便它知道如何对项目进行排序。这样,当我们返回键或者它们的值时,它们应该按照IComparable实现指定的顺序。对于整数,这当然是微不足道的:
a < b
有序词典允许按索引或者按键进行恢复。
OrderedDictionary是必经之路。它提供O(1)退刀和O(n)插入。有关更多详细信息,请参见codeproject
数组呢?
KeyValuePair<int, bool>[] pairs
当我们要在集合初始化后添加对时,列表可能会更有用。
List<KeyValuePair<int, bool>>