.net 中的 HashTable 取消排序

发布于 2024-12-09 11:59:07 字数 197 浏览 0 评论 0原文

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

我想删除这种排序,因为我已经有需要打印的特定顺序的列表。

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

谢谢

I am working with the hashtable in C# and due to some reason I don't get the expected result as the Hashtable sorts all the entries.

I wanna remove this sorting as I already have list in a particular ordered that needs to be printed

The list gets added to hashtable correctly based on the order but when I iterate through the HashTable, it sorts all the entries and produces completely sorted entries. BTW I am using DictionaryEntry for iterating through the hashtable.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

So要识趣 2024-12-16 11:59:08

这是预期的行为。它不对条目进行排序,哈希表条目以不确定的顺序迭代。它们针对随机访问进行了优化,因此 HashTable 结构中不保留插入顺序,因此无法按插入顺序迭代条目。

根据MSDN页面序列化和反序列化哈希表可能会导致迭代顺序发生变化。

您也许可以使用 NameValueCollection< /code>SortedDictionary这个问题/答案

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

This is the expected behaviour. It is not sorting the entries, Hashtables entries are iterated in a non-determinstic order. They are optimised for random access and as a consequence insertion order is not preserved in the HashTable structure, and so the entries cannot be iterated in insertion order.

According to the MSDN page serialising and deserializing the hashtable can cause the iteration order to be changed.

You might be able to use the NameValueCollection or SortedDictionary as outlined in this question/answer

Your other option (assuming that neither of the options above do what you want) is to create a class which does exactly what you want. You could track entries and store them in a list (as well as the hashtable), then return the iterator for the list rather than the hashtable from your class so you could get both iteration in order and fast random access.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文