请参阅此处的示例,我按此顺序存储值!但是我得到的输出是不同的!为什么?哈希表以什么顺序存储值?
{
Hashtable ht = new Hashtable();
ht.Add("001", "Zara Ali");
ht.Add("002", "Abida Rehman");
ht.Add("003", "Joe Holzner");
ht.Add("004", "Mausam Benazir Nur");
ht.Add("005", "M. Amlan");
ht.Add("006", "M. Arif");
ht.Add("007", "Ritesh Saikia");
ICollection key = ht.Keys;
foreach (string k in key)
{
Console.WriteLine(k + ": " + ht[k]);
}
}
乌普特
006: M. Arif
007: Ritesh Saikia
003: Joe Holzner
002: Abida Rehman
004: Mausam Benazir Nur
001: Zara Ali
005: M. Amlan
最佳答案
哈希表不能保证其中元素的定义顺序。哈希表的实现根据其哈希码及其内部实现将值分成不同的存储桶,这意味着相同的值在不同的计算机,不同的运行或框架的不同版本上可能具有不同的顺序。这是因为哈希表针对按键检索而不是按顺序检索进行了优化。
如果您希望可以同时按键和按顺序访问集合,请使用专门的集合之一。通过使用Hashtable
而不是Dictionary<K,V>
判断,可能使用的是.NET 1.1,在这种情况下,可以使用SortedList
来内部维护顺序。较新版本的.NET具有SortedList<K,V>
和OrderedDictionary<K,V>
,它们的性能特征有所不同:
What's the difference between SortedList and SortedDictionary?
关于c# - 在Hashtable中打印的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27598127/