【问题标题】:Difference between Tree and Hash(Sets-Maps) in Java [duplicate]Java中树和哈希(集合映射)之间的区别[重复]
【发布时间】:2013-11-12 04:07:12
【问题描述】:

我对下一个 Sets 的功能有疑问,我真的知道 java 中 TreeSet 和 HashSet 之间有什么区别,以及 TreeMap 和 HashMap 之间有什么区别。

谢谢。

【问题讨论】:

  • 我知道这些集合是如何工作的,但我想知道两者之间的区别。谢谢
  • 阅读每个类的文档。然后创建一个不同的帖子,提出更精致的问题。 (我想知道它们是如何工作的意味着知道它们之间的差异,但是..)
  • 我知道如何创建这些集合以及如何填充它们,但我看不出有什么区别,对我来说,这些集合的作用是一样的。
  • 该文档讨论或提供了一些实现之间不同问题的线索:1)订购保证(或缺乏); 2) 项目要求; 3) 预期性能界限; 4) 接口中未定义的附加方法。

标签: java hashmap hashset treemap treeset


【解决方案1】:

TreeMaps 和 TreeSets 在几乎所有方面都与 HashMaps 和 HashSets 相似,只是 Tree 版本将数据保持在排序顺序(与未指定顺序的 Hash 版本不同)。

借助 TreeMap 和 TreeSet,您可以选择使用内容的“自然”顺序(假设内容实现了 Comparable 接口),或者您可以提供自己的 Comparator 来为您进行排序。

一个令人惊讶的区别是您可以将null 存储在 HashMap 和 HashSet 中,但不能(必须)存储在 TreeSet 中或作为 TreeMap 中的键。

【讨论】:

    【解决方案2】:

    哈希集比树集快得多,但不提供排序保证。 树集通过使用比较器(自然排序)在树中组织数据,散列集在散列表中组织数据(使用散列函数)。 您可以在哈希集中存储空值的另一件事。虽然你不能在树集中存储 null 它会抛出异常空指针异常

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2010-09-18
    • 2010-10-26
    • 2018-10-13
    • 2016-01-24
    • 2016-12-09
    • 2010-11-11
    相关资源
    最近更新 更多