作者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)
推 Eric30:應該就只是'05的Hashtable新增時不是循序這樣吧? @~@ 09/20 21:20
推 Eric30:我跑的結果跟你一樣 不知道書上那個是用啥跑的 @@ 09/20 21:26
→ wa120:那就讓我更好奇它的foreach怎麼處理的了= = 09/20 21:42
→ wa120:這本書教下載SDK直接用command line編譯 囧"" 09/20 21:48
推 retsamsu:hashtable本然就沒有順序概念阿~應該是隨意亂取的~ 09/20 21:59
→ retsamsu:看看object id看看,也許是取那個順序了~ 09/20 22:01
推 wa120:XD微軟的foreach輸出也不是照順序的(下面範例) 09/21 18:08
→ wa120:中間片段foreach解說看不懂DictionaryEntry是甚麼= = 09/21 18:09
→ wa120:他說the element type is DictionaryEntry 不是key/value 09/21 18:11
推 abcf:ret大大說的沒錯,hashtable沒順序,你要用foreach取出來當然 12/21 17:01
→ abcf:會亂跑,你為何不用陣列呢 12/21 17:01