【发布时间】:2016-04-20 22:31:55
【问题描述】:
我有大量字符串,我需要按排序顺序打印唯一的字符串。 TreeSet 按排序顺序存储它们,但每次插入的插入时间为 O(Logn)。 HashSet 需要 O(1) 时间来添加,但是我必须获取集合列表,然后使用需要 O(nLogn) 的 Collections.sort() 进行排序(我假设这里没有内存开销,因为只有字符串的引用将被复制到新集合中,即列表)。是否可以公平地说总体上任何选择都是相同的,因为最终总时间会相同?
【问题讨论】:
-
重要问题:字符串中有多少是重复的?
-
@Nevado 我可以问同样的问题:为什么要 upvote?根据 downvote 的工具提示,downvote 的问题要么是不清楚、对其他人无用、表述不当(信息不足等),要么是因为缺乏 OP 的研究工作。附带说明:OP 提出了一个与优化相关的问题,但没有 a) 自己完成分析和测试,b) 提供了足够的上下文。在新手询问的 99% 的情况下,
TreeSet和HashSet之间的差异可以忽略不计。此外,几乎任何本关于算法的书籍都涵盖了这个问题的答案。 -
Hashset vs Treeset的可能重复
-
@Nevade 也是 stackoverflow.com/questions/1463284/hashset-vs-treeset 、 stackoverflow.com/questions/31800701/… 、 stackoverflow.com/questions/20217414/… 、 stackoverflow.com/questions/23168490/… 的骗子——也许还有大约 10 个其他直接相关的问题。
标签: java sorting collections hashset treeset