我在互联网上听到了很多不同的事情,包括有人明确指出与哈希表相比,BST需要更少的内存,因为哈希表一次获取的内存比当前所需的更多。
一个只能告诉我每种结构的优缺点,而仅就记忆而言。
答案 0 :(得分:1)
二叉搜索树不过是一个链表,每个节点有2个指针。所需的内存顺序为O(n),即与其中存储的元素数相同。 另一方面,哈希映射通常实现为数组。因此,总有一些未使用的空间。在这里阅读有关如何在Java中实现哈希映射的信息:http://java-performance.info/memory-consumption-of-java-data-types-2/
HashMap构建在Map.Entry对象数组的顶部。的 实现可确保此数组长度始终等于 最小max(大小,容量)/ load_factor。的默认负载系数 HashMap为0.75,默认容量为16。负载系数指定 数组的哪一部分可以用于存储,并且是一个值 在0和1之间。负载系数越高,空间越小 被浪费了,但是HashMap由于速率增加而开始工作较慢 的碰撞。如果负载系数越小,则内存越大 浪费了,但是HashMap的性能由于较小而提高了 发生碰撞的可能性。