我需要在.NET中存储(integer,boolean)键值对的列表
当我使用字典时,它会对它们进行重新排序。是否有内置的集合来处理这个问题。
答案 0 :(得分:8)
List<KeyValuePair<int, bool>> l =
new List<KeyValuePair<int, bool>>();
l.Add(new KeyValuePair<int, bool>(1, false));
答案 1 :(得分:3)
如果您想保留插入顺序,为什么不使用队列?
http://msdn.microsoft.com/en-us/library/6tc79sx1(VS.71).aspx
字典重新排序元素以加快查找速度。保留插入顺序会破坏这个目的......
答案 2 :(得分:0)
你可以创建一个KeyValuePairs列表:
var myList = new List<KeyValuePair<int, bool>>();
答案 3 :(得分:0)
Ordered dictionary允许按索引或按键检索。
答案 4 :(得分:0)
OrderedDictionary是要走的路。它提供O(1)检索和O(n)插入。有关详细信息see codeproject
答案 5 :(得分:0)
阵列怎么样?
KeyValuePair<int, bool>[] pairs
如果要在初始化集合后添加对,则列表可能更有用。
List<KeyValuePair<int, bool>>
答案 6 :(得分:-2)
字典应该重新排序它们,地图本身没有顺序概念。
.Net中有一个类支持这个概念:
SortedDictionary<Tkey, Tvalue>
它要求Tkey类型实现de IComparable接口,因此它知道如何对项目进行排序。这样,当您返回密钥或值时,它们应按IComparable实现指定的顺序。对于整数当然是微不足道的:
a < b