交换HashSet和TreeSet

时间:2012-08-22 16:43:53

标签: java set comparable

  

可能重复:
  Hashset vs Treeset

您可以互换使用HashSetTreeSet吗?如果我在一个程序中交换了TreeSet Hashset,反之亦然,那会有什么问题?我知道您需要为Comparable实施TreeSet

3 个答案:

答案 0 :(得分:3)

如果某些API需要Set,那么您传递的实现绝对无关紧要。如果它需要混凝土类型(不太可能),你不能混合它们。

一般来说,他们的不同之处在于性能(HashSet更快),但这不应该影响程序的行为和顺序。 HashSet中的项目顺序无法预测。如果您的计划依赖于任何此类订单,则应使用LinkedHashSetTreeSet

答案 1 :(得分:2)

HashSetTreeSet都是Set个。它们大多可以互换,但请记住TreeSet也是SortedSet,因此其元素必须实现Comparable

答案 2 :(得分:1)

如果您想要订购套装,则应使用TreeSet。如果您改为使用HashSet,那么对于依赖于排序的操作,您将获得不可预测的结果。

另一方面,如果订单不是你担心的话,HashSet要比TreeSet快得多。