我正在使用C#中的散列表,並且由於某種原因,我沒有得到預期的結果,因爲散列表對所有條目進行排序。Unsort或unorder HashTable in .net
我想刪除這個排序,因爲我已經有一個特別下令需要打印
列表被添加基於該順序正確hashtable中,但是當我通過哈希表迭代,它排序所有列表條目並生成完全排序的條目。順便說一句我正在使用DictionaryEntry迭代通過散列表。
謝謝
我正在使用C#中的散列表,並且由於某種原因,我沒有得到預期的結果,因爲散列表對所有條目進行排序。Unsort或unorder HashTable in .net
我想刪除這個排序,因爲我已經有一個特別下令需要打印
列表被添加基於該順序正確hashtable中,但是當我通過哈希表迭代,它排序所有列表條目並生成完全排序的條目。順便說一句我正在使用DictionaryEntry迭代通過散列表。
謝謝
這是預期的行爲。它不對條目排序,哈希表條目以非確定性順序迭代。它們針對隨機訪問進行了優化,因此插入順序不會保留在HashTable
結構中,因此條目無法按插入順序進行迭代。
根據MSDN page序列化和反序列化散列表可以導致迭代順序改變。
您的其他選項列出您可能能夠使用NameValueCollection
或SortedDictionary
(假設未在上述選項中做你想要的)是創建一個類,它不正是你想要的東西。您可以跟蹤條目並將它們存儲在列表中(以及散列表),然後返回列表的迭代器而不是來自類的散列表,這樣您就可以按順序進行迭代並快速進行隨機訪問。
也許你可以嘗試在System.Collections.Generic.SortedDictionary下使用SortedDictionary 它的一個構造函數以IComparer作爲它的參數。 –
爲什麼你把它放在第一個字典?爲什麼不在名單? –