订购哈希集示例?
我需要一个关于如何在 HashSet 上使用类似类来获取升序的示例。假设我有一个像这样的 HashSet
:
HashSet<String> hs = new HashSet<String>();
如何让 hs
按升序排列?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我需要一个关于如何在 HashSet 上使用类似类来获取升序的示例。假设我有一个像这样的 HashSet
:
HashSet<String> hs = new HashSet<String>();
如何让 hs
按升序排列?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
使用
TreeSet
相反。它有一个 带有Comparator
的构造函数。它会自动对Set
进行排序。如果您想将
HashSet
转换为TreeSet
,请执行以下操作:如果您拥有的项目本身已经实现了
Comparable
并且它的默认排序顺序已经是你想要的,那么你基本上不需要提供比较器
。然后,您可以直接基于HashSet
构造TreeSet
。例如,另请参阅:
Use a
TreeSet
instead. It has a constructor taking aComparator
. It will automatically sort theSet
.If you want to convert a
HashSet
to aTreeSet
, then do so:If the items you have itself already implements
Comparable
and its default ordering order is already what you want, then you basically don't need to supply aComparator
. You could then construct theTreeSet
directly based on theHashSet
. E.g.See also:
HashSet
"不保证集合的迭代顺序。”使用LinkedHashSet
反而。附录:我赞同@BalusC关于实现
的观点可比较
和快递稍微偏好
LinkedHashSet
< /a>,它提供“可预测的迭代顺序......而不会增加与TreeSet
。”附录:@Stephen 提出了一个重要观点,支持 @BalusC 对
TreeMap
的建议。仅当数据(几乎)静态且已排序时,LinkedHashSet 才是更有效的替代方案。HashSet
"makes no guarantees as to the iteration order of the set." UseLinkedHashSet
instead.Addendum: I would second @BalusC's point about implementing
Comparable
and expressa slight preference for
LinkedHashSet
, which offers "predictable iteration order ... without incurring the increased cost associated withTreeSet
."Addendum: @Stephen raises an important point, which favors @BalusC's suggestion of
TreeMap
.LinkedHashSet
is a more efficient alternative only if the data is (nearly) static and already sorted.HashSet 不保证迭代顺序 :
您可能需要选择不同的数据结构如果您希望能够控制迭代顺序(或者确实有一个!)
HashSets do not guarantee iteration order:
You probably need to choose a different datastructure if you want to be able to control the iteration order (or indeed have one at all!)