Hashtable问题

qqqwwwqw 2009-03-11 03:55:07
Hashtable h = new Hashtable();

h.Add("1", "111");
h.Add("2","222");
foreach (object o in h.Keys) {
Console.WriteLine(o+"=="+h[o]);
}

Hashtable h1 = new Hashtable();

h1.Add(1, "111");
h1.Add(2, "222");
foreach (object o in h1.Keys)
{
Console.WriteLine(o + "==" + h1[o]);
}

为什么打印出来的顺序变了?
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liu4545533 2009-03-16
  • 打赏
  • 举报
回复
关注
memorywang 2009-03-16
  • 打赏
  • 举报
回复
Hashtable表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。
每个元素都是一个存储在 DictionaryEntry 对象中的键/值对。键不能为 null 引用(在 Visual Basic 中为 Nothing),但值可以.
当把某个元素添加到 Hashtable 时,将根据键的哈希代码将该元素放入存储桶中。元素是无序的,不能通过下标来访问Hashtable的值.
ztenv 2009-03-16
  • 打赏
  • 举报
回复
别伯hashtable了,影响效率,用IDictionary<keytype,valuetype>
zhushaoyue 2009-03-16
  • 打赏
  • 举报
回复
都说HashTable了
它是按哈希算法计算的
net_flyfox 2009-03-11
  • 打赏
  • 举报
回复
好长时间没有用.net 了,了解一下。
qiuzhengxiang 2009-03-11
  • 打赏
  • 举报
回复
up学习了
  • 打赏
  • 举报
回复
hashtable,是会对key值进行hash算法得出一个key后来存储的,所以最后的顺序就变掉了
vrhero 2009-03-11
  • 打赏
  • 举报
回复
Hashtable实际上是由key的hash值排序的...所以看上去无序...

可以用SortedDictionary<TKey, TValue>泛型类...2.0以上应该淘汰Hashtable,用Dictionary<TKey, TValue>类...
zgke 2009-03-11
  • 打赏
  • 举报
回复
Hashtable 会根据你的key进行排序的. 你可以在定义个Ilist<int>放Hashtable的顺序

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧