如何按字母顺序遍历哈希表的键?
按字母升序遍历哈希表键的最简单方法是什么?
What is the easiest way to traverse a hashtable's keys in ascending alphabetical order?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
按字母升序遍历哈希表键的最简单方法是什么?
What is the easiest way to traverse a hashtable's keys in ascending alphabetical order?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
这很大程度上取决于密钥的类型。 但让我们假设它们是字符串。 您可以使用以下 LINQ 查询
对于更复杂的结构,LINQ 查询仅略有不同。 假设您对键有以下定义
LINQ 代码如下
This is fairly dependent upon what the type of the key is. But lets assume for a minute that they are strings. You could use the following LINQ query
For more complex structures the LINQ query is only slightly different. Lets assume you had the following definition for a key
The LINQ code would be the following
好吧,我发现这个片段最适合我的情况:
Well, I found this snippet to be the most suitable to my situation:
如果您想要一个将键保持自然顺序的映射,我建议您不要使用
Hashtable
开始。 如果您仍在使用 1.1,请使用System. Collections.SortedList
。 如果您使用的是 2.0 或更高版本,请使用SortedList;
或SortedDictionary;
。 后两者在 API 方面大部分相同,但具有不同的性能特征 - 请参阅文档以获取更多信息。If you want a map which keeps its keys in natural order, I suggest you don't use
Hashtable
to start with. If you're still using 1.1, usingSystem.Collections.SortedList
. If you're using 2.0 or higher, useSortedList<TKey, TValue>
orSortedDictionary<TKey, TValue>
. The latter two are largely the same in terms of API, but have different performance characteristics - see the docs for more information.这并不是哈希表的真正设计目的(它们被设计为具有均匀的键分布)。 使用排序树?
Thats not really what hash tables are designed for (they are made to have uniform distribution of keys). Use a sorted tree?
可能会稍微快一些
使用 SortedList -创建和排序 。 对 ArrayList 进行排序是 O(n) + O(nlog n) = O(nlog n),而 SortedList 构造函数(根据文档)是 O(n),因此直接使用 SortedList 比使用要快数组列表和显式排序
It'll probably be slightly faster to use SortedList -
creating & sorting the ArrayList is O(n) + O(nlog n) = O(nlog n), whereas the SortedList constructor (according to the docs) is O(n), so it'll be faster to use SortedList directly rather than using an arraylist and explicitly sorting