我们如何将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>>