当前位置: 首页 > 面试题库 >

TreeMap或HashMap?

季骏祥
2023-03-14
问题内容

何时使用哈希图或树图?

我知道可以在需要对元素进行排序时使用TreeMap对其进行迭代。只是吗?当我只想查阅地图或某些最佳特定用途时,没有优化?


问题答案:

哈希表(通常)执行搜索操作(查找),其复杂度限制为O(n)<=T(n)<=O(1),平均情况复杂度为O(1 + n/k);但是,二进制搜索树(BST)执行搜索操作(查找),其复杂度限制为O(n)<=T(n)<=O(log_2(n)),平均情况复杂度为O(log_2(n))。(您自己)应该了解每个(每个)数据结构的实现,以了解其优缺点,操作时间复杂度和代码复杂度。

例如,哈希表中的条目数通常具有一些固定数量的条目(某些部分可能根本无法填充),其中包含冲突列表。另一方面,树通常每个节点有两个指针(引用),但是如果实现允许每个节点有两个以上的子节点,则树可以更多,并且这允许树随着节点的添加而增长,但可能不允许重复。(Java
TreeMap的默认实现不允许重复)

还有一些特殊情况需要考虑,例如,如果特定数据结构中的元素数量无限制地增加或接近数据结构的基础部分的限制,该怎么办?那么执行一些重新平衡或清理操作的摊销操作又如何呢?

例如,在哈希表中,当表中的元素数变得足够大时,可能发生任意数量的冲突。另一方面,在插入(或删除)之后,树通常需要进行重新平衡过程。

因此,如果您有类似缓存的内容(例如,有界元素的数量或大小是已知的),那么哈希表可能是您的最佳选择。但是,如果您有更多类似字典的内容(例如,填充一次,查找多次),那么我会使用一棵树。

但是,这仅在一般情况下(未提供任何信息)。您必须了解发生的过程,以决定如何使用哪种数据结构来决定使用哪种数据结构。

当我需要一个多图(范围查找)或集合的排序展平时,它就不能是哈希表。



 类似资料:
  • 我需要使一个程序,计数频率的每一个字在一个文本,另外,我需要能够返回一个列表的n个最经常的字(如果更多的字有相同的频率,他们排序的字母顺序)。还有一个单词列表是不被计算的(停止单词)。 停用词用什么结构 我认为HashSet是最有效的 HashMap添加单词的效率更高,但需要排序,TreeMap插入单词需要logn时间,但单词可以按频率排序 总体而言,什么方法更有效? 附言。@主持人我知道有一个类

  • TreeMap是数据树的直观表示,其中每个节点可以有零个或多个子节点,以及一个父节点(根节点除外)。 每个节点都显示为一个矩形,可以根据我们指定的值进行调整大小和着色。 尺寸和颜色相对于图中的所有其他节点进行估值。 以下是树形图图表的示例。 我们已经在Google Charts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们看一个TreeMap图表的示例。

  • 问题内容: 我需要对元素进行排序,但不会删除重复项。 我已经去了,因为实际上将值添加到支持的: 然后TreeMap使用 逻辑删除重复项 我写了一个在元素相等的情况下返回1而不是0的a 。因此,在元素相等的情况下,带有此元素将不会覆盖重复项,而只会对其进行排序。 我已经为简单对象测试过,但是我需要一组自定义对象。 这种方法是好的还是有更好的方法来实现呢? 编辑 实际上,我有以下类的ArrayList

  • 问题内容: import java.util.*; 输出: 我想知道为什么我们在第一条注释行中得到空值,而第二条注释行中却显示出非空值。 编辑:@null的版本似乎不起作用。我将代码更改如下: 似乎可行,但我不确定。 问题答案: 我的猜测是您的方法永远不会返回0(表示相等),从而导致该方法找不到匹配项。

  • TreeMap类使用树实现Map接口。 TreeMap提供了一种以排序顺序存储键/值对的有效方法,并允许快速检索。 您应该注意,与哈希映射不同,树映射保证其元素将按升序键顺序排序。 以下是TreeMap类支持的构造函数列表。 Sr.No. 构造函数和描述 1 TreeMap( ) 此构造函数构造一个空树图,该图将使用其键的自然顺序进行排序。 2 TreeMap(Comparator comp) 此

  • Treemap 是一个用于树状图可视化的 R 包。