在.net中取消排序或取消排序HashTable

时间:2011-10-13 09:18:28

标签: c# .net sorting hashtable

我正在使用C#中的哈希表,由于某种原因,我没有得到预期的结果,因为Hashtable对所有条目进行排序。

我想删除这种排序,因为我已经在需要打印的特定订单中列出了

列表会根据顺序正确添加到哈希表中,但是当我遍历HashTable时,它会对所有条目进行排序并生成完全排序的条目。顺便说一下,我使用DictionaryEntry迭代哈希表。

由于

1 个答案:

答案 0 :(得分:3)

这是预期的行为。它不对条目进行排序,Hashtables条目以非确定的顺序迭代。它们针对随机访问进行了优化,因此插入顺序不会保留在HashTable结构中,因此不能按插入顺序迭代这些条目。

根据MSDN page序列化和反序列化,哈希表可以导致迭代顺序发生变化。

您可以使用NameValueCollection中所述的SortedDictionarythis question/answer

你的另一个选择(假设上面的两个选项都没有你想要的)是创建一个完全符合你想要的类。您可以跟踪条目并将它们存储在列表(以及哈希表)中,然后返回列表的迭代器而不是类中的哈希表,这样您就可以按顺序进行迭代并快速随机访问。