c#中hashtable问题

来源:百度知道 编辑:UC知道 时间:2024/06/10 12:10:28
class Program
{
static void Main(string[] args)
{
Hashtable hs = new Hashtable();
hs.Add("001", "str1");
hs.Add("002", "str2");
hs.Add("003", "str3");
Console.WriteLine("code string");
foreach (string s in hs.Keys)
{
Console.WriteLine(s + " " + hs[s]);
}
Console.ReadLine();
}
}

为什么输出是先str3.再str1.再str2.
是不是跟Hashtable的结构有关系?
谢谢!

哈希表不是顺序表,输出不一定有序。
对哈希表进行排序在这里的定义是对key/value键值对中的key按一定规则重新排列,但是实际上这个定义是不能实现的,因为我们无法直接在Hashtable进行对key进行重新排列,如果需要Hashtable提供某种规则的输出,可以采用一种变通的做法:
ArrayList akeys=new ArrayList(ht.Keys); //别忘了导入System.Collections
akeys.Sort(); //按字母顺序进行排序
foreach(string skey in akeys)
{
Console.Write(skey + ":");
Console.WriteLine(ht[skey]);//排序后输出
}