【发布时间】:2019-05-16 19:06:41
【问题描述】:
我在互联网上听到了不同的说法,包括有人明确指出与 hast 表相比,BST 需要更少的内存,因为哈希表一次获得的内存比他们目前需要的多。
谁能告诉我每种结构与其他结构相比的优缺点,仅在记忆方面。
【问题讨论】:
标签: algorithm memory binary-search-tree hashtable
我在互联网上听到了不同的说法,包括有人明确指出与 hast 表相比,BST 需要更少的内存,因为哈希表一次获得的内存比他们目前需要的多。
谁能告诉我每种结构与其他结构相比的优缺点,仅在记忆方面。
【问题讨论】:
标签: algorithm memory binary-search-tree hashtable
二叉搜索树只不过是一个链表,每个节点有 2 个指针。所需内存的数量级为 O(n) ,即与存储在其中的元素数量相同。 另一方面,哈希映射通常实现为数组。所以,总是有一些未使用的空间。在此处阅读有关如何在 java 中实现哈希映射的信息。:http://java-performance.info/memory-consumption-of-java-data-types-2/
HashMap 建立在 Map.Entry 对象数组之上。这 实现确保此数组长度始终等于 at 最小最大值(大小,容量)/ load_factor。默认负载系数 HashMap 为 0.75,默认容量为 16。负载因子指定 数组的哪一部分可以用于存储并且是一个值 介于 0 和 1 之间。负载系数越高,空间越小 被浪费了,但是由于速率增加,HashMap 开始工作变慢 的碰撞。负载因子越小,内存越多 浪费了,但是由于更小的 HashMap 的性能正在提高 碰撞的可能性。
【讨论】: