当前位置: 首页 > 编程语言 > C#

如何在字典的第一个索引处插入一个元素?分享

时间:2023-04-10 20:46:56 C#

如何在字典的第一个索引处插入元素?是否有一种方法或技术允许您将元素插入到字典中,以便保证该项目位于该字典的KeyCollection的第一个索引中。例如:字典dic=foo.GetOutput();//`dic`是这样的://{"foo","baa"},//{"a","b"}我需要这样的东西:dic.Add("key","value",0);//其中`0`是要插入的`key`的索引。foreach(KeyValuePairkeyindic){Console.WriteLine("{0}={1}",key.Key,key.Value);}输出:key=valuefoo=baaa=b表格中的任何帮助表示赞赏。提前致谢!不使用字典。字典是作为哈希表实现的。键在字典中的位置取决于散列码,进一步减少散列码以提供其内部结构索引的方式,以及完全依赖于实现的插入顺序。这不是实现字典的唯一方法。SortedDictionary在内部使用树结构,因此键始终保持有序。这样的话,我们一开始还是不插东西,插东西,然后放到位。如果订购是您最关心的问题,那么您根本不需要纯词典。相反,您需要一个List>或者您需要一个结构,它提供列表和字典的功能,由OrderedDictionary提供。这不是通用的,但您可以轻松地围绕它创建一个通用包装器(不会提供在内部使用泛型的性能优势,但确实提供类型安全)。字典是无序的;元素旨在使用键进行检索,键的散列指向其值的位置。您可能需要的是一个列表,其元素可以插入到特定索引处。列表>list=dic.ToList();list.Insert(0,newKeyValuePair("a","b"));foreach(列表中的键值对对)Console.WriteLine("{0}={1}",pair.Key,pair.Value);我知道这是一个三年前的问题。但是找到了解决这个问题的方法。它可能会帮助某人Dictionarydic=foo.GetOutput();dic=(newDictionary{{"key","value"}}).Concat(dic).ToDictionary(k=>k.Key,v=>v.Value);这会将元素插入到字典的开头:)这不能用Dictionary实现,因为它在枚举时以无序方式显示其值。SortedDictionary提供排序,但是它是直接使用IComparer对键值进行排序。在这里,您希望键是一个字符串并根据int进行排序。这两种类型都不可能。我认为您需要在其中实现具有这些非常特定语义的新类型。例如。类OrderedMap{privatereadonlyDictionary_map=newDictionary();私有只读列表_list=newList();publicvoidAdd(TKeykey,TValuevalue){if(!_map.ContainsKey(key)){_list.Add(key);}_map[键]=值;}publicvoidAdd(TKeykey,TValuevalue,intindex){if(_map.ContainsKey(key)){_list.Remove(key);}_map[键]=值;_list.Insert(索引,键);}publicTValueGetValue(TKeykey){return_map[key];}publicIEnumerabe>GetItems(){foreach(varkeyin_list){varvalue=_map[key];yieldreturnnewKeyValuePair(key,value);请注意,与传统字典相比,这确实有一些重要的性能差异。例如,添加和删除速度较慢。字典本质上是无序的(或者更确切地说,排序是不可预测的,不应依赖)。如果你想要某种排序,你需要使用其他类型。在不知道您的要求的情况下很难推荐任何特定类型。无法订购词典。您可以尝试使用SortedDictionary,但它是按键排序的,而不是单独的索引。Dictionary类不按顺序保存项目,因此没有“第一个”项目。有一个SortedDictionary(.NET4.0+),它按键排序,但同样,这是一个非常模糊的“第一”概念。字典是一个无序的集合。您可以尝试OrderedDictionary-http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx-它有一个Insert()方法,这就是您所追求的。这是我的解决方案,也许不是最好的解决方案,但它确实有效。=)以上是C#学习教程:如何在字典的第一个索引处插入一个元素?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——publicstaticComboBoxFillDropDownList(Dictionarydictionary,ComboBoxdropDown,Stringselecione){vard=newSortedDictionary();d.Add("0",选择);foreach(字典中的KeyValuePair对){d.Add(pair.Key,pair.Value);}dropDown.DataSource=newBindingSource(d,null);dropDown.DisplayMember="值";dropDown.ValueMember="钥匙";dropDown.SelectedIndex=0;返回下拉列表;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: