Java - 我有一个字符串的哈希集,我想以某种方式按字符串的长度对这些字符串进行排序
我真的只需要某种方法来查找 hashSet 中具有最大长度的所有字符串(无论是一个字符串还是多个字符串)。我想我应该首先以某种方式对字符串长度的集合进行排序,然后也许迭代它(从最长的字符串到最短的字符串,这样我可以在看到所有最大长度的字符串后停止迭代)。谁能帮我弄清楚如何最好地解决这个问题(主要是想知道如何有效地按长度对它们进行排序)?谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当您尝试查找最长字符串时,通过将字符串存储在
HashSet
中进行快速查找所获得的效率不会对您有帮助。您需要为此更新您的数据结构。一种选择是存储两个单独的数据结构 - 字符串集的
TreeSet>
,其中TreeSet
的比较器仅比较字符串的长度字符串,加上之前的HashSet
。您可以高效地将字符串插入到此混合数据结构中,只需更新TreeSet
中的相应集合以包含新字符串,然后像以前一样将字符串插入到HashSet
中即可。它还可以让您通过查询 TreeSet 的最大元素来高效地找到所有最大的字符串。希望这有帮助!
The efficiency gained by storing the strings in a
HashSet
for fast lookups will not help you when trying to find the longest string. You'll need to update your data structure for that.One option would be to store two separate data structures - a
TreeSet<Set<String>>
of sets of strings, where the comparator for theTreeSet
just compares the length of the strings, plus the earlierHashSet
. You could insert a string into this hybrid data structure efficiently by just updating the appropriate set in theTreeSet
to contain the new string and inserting the string into theHashSet
like before. It would also let you efficiently find all the largest strings simply by querying theTreeSet
for its largest element.Hope this helps!