作者wa120 (哇120)
看板C_Sharp
标题[问题] 问...Hashtable物件
时间Thu Sep 20 21:00:21 2007
抱歉新手发问~"~ 最近才开始碰C#
可能这个问题是很简单的问题= =
以下物件使用(using System.Collections)_
Hashtable hashtable = new Hashtable();
hashtable.Add("02", "台北");
hashtable.Add("03", "桃园");
hashtable.Add("06", "台南");
hashtable.Add("07", "高雄");
hashtable.Add("04", "台中");
hashtable.Add("05", "嘉义");
foreach (string zip in hashtable.Keys)//让阵列内数值都跑一遍
{
Console.WriteLine(" {0}\t\t{1}", zip, hashtable[zip]);
}
执行结果是 课本范例执行结果
04 台中 02 台北
03 桃园 03 桃园
02 台北 06 台南
07 高雄 07 高雄
06 台南 04 台中
05 嘉义 05 嘉义
搞的我一头雾水= =
书本上说他是key/value对照的hash
foreach是由小到大的key值输出
可是他的顺序却不一样
原本以为hash的bucket的key值的是随机
不过他的执行结果都一样= =
另外一个猜测课本的hash founction跟VC#2005的hash function不一样
麻烦高手解答...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.64.79.15
※ 编辑: wa120 来自: 61.64.79.15 (09/20 21:05)
1F:推 Eric30:应该就只是'05的Hashtable新增时不是循序这样吧? @~@ 09/20 21:20
2F:推 Eric30:我跑的结果跟你一样 不知道书上那个是用啥跑的 @@ 09/20 21:26
3F:→ wa120:那就让我更好奇它的foreach怎麽处理的了= = 09/20 21:42
4F:→ wa120:这本书教下载SDK直接用command line编译 囧"" 09/20 21:48
5F:推 retsamsu:hashtable本然就没有顺序概念阿~应该是随意乱取的~ 09/20 21:59
6F:→ retsamsu:看看object id看看,也许是取那个顺序了~ 09/20 22:01
8F:推 wa120:XD微软的foreach输出也不是照顺序的(下面范例) 09/21 18:08
9F:→ wa120:中间片段foreach解说看不懂DictionaryEntry是甚麽= = 09/21 18:09
10F:→ wa120:他说the element type is DictionaryEntry 不是key/value 09/21 18:11
11F:推 abcf:ret大大说的没错,hashtable没顺序,你要用foreach取出来当然 12/21 17:01
12F:→ abcf:会乱跑,你为何不用阵列呢 12/21 17:01