- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我一直在寻找一种方法来拥有我的 Dictionary
枚举其KeyValuePair
按照添加它们的顺序。现在,Dictionary's documentation明确指出:
For purposes of enumeration, each item in the dictionary is treated as a
KeyValuePair<TKey, TValue>
structure representing a value and its key. The order in which the items are returned is undefined.
我发现我需要的是 OrderedDictionary
,但作为怀疑论者,我决定自己尝试一下:
OrderedDictionary od = new OrderedDictionary();
Dictionary<String, String> d = new Dictionary<String, String>();
for (int i = 0; i < 10; i++)
{
od.Add("key" + i, "value" + i);
d.Add("key" + i, "value" + i);
}
System.Console.WriteLine("OrderedDictionary");
foreach (DictionaryEntry de in od) {
System.Console.WriteLine(de.Key + ", " + de.Value);
}
System.Console.WriteLine("Dictionary");
foreach (var tmp in d) {
System.Console.WriteLine(tmp.Key + ", " + tmp.Value);
}
输出:
OrderedDictionary
key0, value0
key1, value1
key2, value2
...
Dictionary
key0, value0
key1, value1
key2, value2
...
如您所见,两者都是有序的,这引发了两个问题:
在这种情况下 Dictionary
给出与添加值的顺序不同的顺序?我的第一个foreach
循环确保我取回我的 KeyValuePair
以相同的顺序,还是我必须使用索引?
最佳答案
你做错了。您不仅需要按顺序将值插入字典,还需要删除一些元素并查看此后顺序如何变化。下一个代码演示了这一点:
OrderedDictionary od = new OrderedDictionary();
Dictionary<String, String> d = new Dictionary<String, String>();
Random r = new Random();
for (int i = 0; i < 10; i++)
{
od.Add("key" + i, "value" + i);
d.Add("key" + i, "value" + i);
if (i % 3 == 0)
{
od.Remove("key" + r.Next(d.Count));
d.Remove("key" + r.Next(d.Count));
}
}
System.Console.WriteLine("OrderedDictionary");
foreach (DictionaryEntry de in od) {
System.Console.WriteLine(de.Key + ", " +de.Value);
}
System.Console.WriteLine("Dictionary");
foreach (var tmp in d) {
System.Console.WriteLine(tmp.Key + ", " + tmp.Value);
}
打印类似于(OrderedDictionary 总是有序的):
OrderedDictionary
key3, value3
key5, value5
key6, value6
key7, value7
key8, value8
key9, value9
Dictionary
key7, value7
key4, value4
key3, value3
key5, value5
key6, value6
key8, value8
key9, value9
关于c# - OrderedDictionary 和字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16694182/
在我的应用程序中,我实现了一些控件 以不同方式浏览数据。在每个控件中,我都显示一个 TreeView 以允许用户从一个文件夹转到另一个文件夹。 我希望我的控件以通用方式“记住”最后选择的树(我的意思是
我对 orderedDictionary 和 Regex 有疑问。我如何通过文本定义问题,但我会尝试解释... 这是我的代码: var smilies = new OrderedDictionary
没有人说 OrderedDictionary 有两个元素副本,一个在哈希表中,另一个在列表中,我在 MSDN 上找不到 OrderedList 的复杂性度量。 谢谢 最佳答案 看看 OrderedDi
我一直在寻找一种方法来拥有我的 Dictionary枚举其KeyValuePair按照添加它们的顺序。现在,Dictionary's documentation明确指出: For purposes o
我尝试以后进先出的顺序迭代有序字典。虽然对于标准字典来说一切正常,但orderedDict的第一个解决方案 react 很奇怪。看来,虽然 popitem() 返回一个键/值对(但不知何故按顺序,因为
我如何遍历 OrderedDictionary反过来访问它的 key ? 由于它不支持 LINQ 扩展,我尝试了以下方法: var orderedDictionary= new OrderedDict
在我的 OrderedDictionary 中,我想替换一个对象。我看到 OrderedDictionary 有一个名为 Insert() 的方法。所以,我想当我获得要替换的对象的索引时,我使用 Re
在 .NET 3.5 中似乎没有 OrderedDictionary(位于 System.Collections.Specialized 命名空间中)的通用实现。有没有我想念的? 我已经找到了提供该功
我有一个包含汇率值的 OrderedDictionary。每个条目都有一个键的日期(每个日期恰好是每年一个季度的开始),值是一个数字。日期按从旧到新的顺序插入。 { date(2017, 1,
在 .NET 3.5 中似乎没有 OrderedDictionary(位于 System.Collections.Specialized 命名空间中)的通用实现。有没有我想念的? 我已经找到了提供该功
前几天,我的一位同事在我们将项目升级到 .NET 4 时遇到了这个问题。 鉴于以下代码: var od = new System.Collections.Specialized.OrderedDic
我有一个从 this repository 中采用的通用 OrderedDictionary并且按预期工作正常。我想添加一个扩展方法来返回给定 TKey 的索引号。 Generic OrderedDi
我有两个键值对,现在我想用较小的值以串行方式填充较大的键值对。 OrderedDictionary pickersPool = new OrderedDictionary(); // Small
我宁愿不在有序字典中将两个单独的值创建到单独的条目中,但如果有一种方法可以完成我在这里尝试做的事情,那就太棒了。 public OrderedDictionary spellResults = new
当 OrderedDictionary、ListDictionary 和 HybridDictionary 这三种不同的字典都执行相似的功能时,它们需要什么? 它们都不是排序的,集合中的元素都可以通过
如何通过索引从 OrderedDictionary 中获取项目的键和值? 最佳答案 orderedDictionary.Cast().ElementAt(index); 关于c# - 如何通过索引从
我想给 OrderedDictionary ( https://github.com/lukaskubanek/OrderedDictionary ) 赋值,这样就可以了。 var orderedDi
如何从 OrderedDictionary 转换至 Dictionary以简洁但高效的方式? 情况: 我有一个我无法触及的库,它希望我通过 Dictionary .我想建立一个 OrderedDict
我有一个自定义的 GridView 控件(继承 system.web.ui.webcontrols.gridview),我想根据用户最近插入的值(inserted values不致力于数据源)。 在
我被指派按照词典编排的方式将字谜组合在一起。 下面是其中一个测试用例: 输入:吃茶 tan ate nat bat 输出: 吃喝茶 bat 自然光 但是,我不断收到这样的类型错误:TypeError:
我是一名优秀的程序员,十分优秀!