如何在无序集合中存储Integer和Boolean键值对?

时间:2008-09-28 21:10:15

标签: .net

我需要在.NET中存储(integer,boolean)键值对的列表

当我使用字典时,它会对它们进行重新排序。是否有内置的集合来处理这个问题。

7 个答案:

答案 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