我有一个字典结构,里面有多个键值对.
myDict.Add(key1,value1); myDict.Add(key2,value2); myDict.Add(key3,value3);
我的字典用作一些控件的数据源.在控件的下拉菜单中,我看到的项目是这样的:
key1 key2 key3
订单与我的字典相同.
我知道Dictionary不像arrayList – 你可以得到索引等.
我不能使用sortedDictionary.
现在我需要在我的程序的某个点添加一个键值对这个字典,我希望它与我这样做的效果相同:
myDict.Add(newKey,newValue); myDict.Add(key1,value3);
如果我这样做,我知道newKey将显示在我的控制作为第一个元素.
我有一个想法来创建一个tempDict,将每个对的myDict放在tempDict中,然后清除myDict,然后添加如下所示的对:
myDict.Add(newKey,value3);
有比这更好的办法吗?
谢谢!
解决方法
Dictionary<K,V>
没有订购.任何感知的订单维护是偶然的(以及特定实现的工件,包括但不限于桶选择顺序和计数).
这些是我所了解的方法(只是使用Base Class Libraries BCL):
> .NET4,不可变,可以将键映射到多个值(在构建过程中观察重复项)
>旧的,非通用的,期望的字典性能界限(其他两种方法是“get(key)/ set(key)”的O(n))
>列表< KeyValuePair< K,V>>
> .NET2 / 3好的,可变的,更多的脚步,可以将键映射到多个值(在插入中观察重复)
快乐编码.
创建一个维护插入顺序的哈希数据结构实际上只是对标准哈希实现的轻微修改(Ruby哈希现在保持插入顺序);然而,这并没有在.NET中完成,更重要的是它是Dictionary / IDictionary合同的一部分.