可能重复:
Hashset vs Treeset
你可以使用HashSet
和TreeSet
互换吗?如果我在一个程序中交换TreeSet
,Hashset
反之亦然,会有什么问题?我知道您需要Comparable
为TreeSet
.
可能重复:
Hashset vs Treeset
你可以使用HashSet
和TreeSet
互换吗?如果我在一个程序中交换TreeSet
,Hashset
反之亦然,会有什么问题?我知道您需要Comparable
为TreeSet
.
如果某些 API 需要Set
,那么您通过哪个实现绝对无关紧要。如果它需要具体类型(不太可能),则不能混合它们。
通常,它们的区别在于性能(HashSet
更快),但这不应该影响您的程序的行为方式和顺序。项目的顺序HashSet
是不可预测的。如果你的程序依赖于任何这样的顺序,它应该使用LinkedHashSet
or TreeSet
。
HashSet
并且TreeSet
都是Set
s。它们大多是可互换的,但请记住TreeSet
也是 a SortedSet
,因此它的元素必须实现Comparable
。
如果您想订购您的套装,您应该使用TreeSet
. 如果您使用 aHashSet
代替,您将获得依赖于排序的操作的不可预知的结果。
另一方面,aHashSet
比 a 快得多,TreeSet
如果命令不是您担心的事情。