【问题标题】:Interchanging HashSet and TreeSet [duplicate]交换 HashSet 和 TreeSet [重复]
【发布时间】:2012-08-18 03:32:34
【问题描述】:

可能重复:
Hashset vs Treeset

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

【问题讨论】:

  • 交换是什么意思?你能写一个示例吗?
  • PS 我对两者的工作原理(优点、缺点等)有一个大致的了解,但我只想知道是否还有其他需要注意的事项。
  • @thinksteep 如果我有一个使用 HashSet 并简单地将其更改为 TreeSet 的程序会有什么问题。
  • @Dave 那要看程序的意图了!

标签: java set comparable


【解决方案1】:

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

另一方面,如果您不担心订单,HashSetTreeSet 快​​得多。

【讨论】:

    【解决方案2】:

    如果某些 API 需要 Set,那么您通过哪个实现绝对无关紧要。如果需要具体类型(不太可能),则不能混合使用。

    一般来说,它们的区别在于性能(HashSet 更快),但这不应该影响您的程序的行为方式和顺序。 HashSet 中的项目顺序是不可预测的。如果你的程序依赖于任何这样的顺序,它应该使用LinkedHashSetTreeSet

    【讨论】:

    • 感谢 Tomasz,这是我正在研究的教程中的一个问题,而且非常模糊,我想这可能是测试您对应该使用 HashSet 和在哪里使用 TreeSet。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-12-29
      • 1970-01-01
      • 2023-03-25
      • 2013-12-05
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-30
      • 2020-06-24
      相关资源
      最近更新 更多