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

哈希图中的存储桶到底是什么?

锺伟志
2023-03-14
问题内容

最近,在一次采访中有人问我,哈希图中的存储桶到底是什么?是数组还是arraylist还是什么?

我很困惑。我知道哈希表由数组支持。那么我可以说存储桶是一个在开始存储哈希码时容量为16的数组,并且链表具有其起始指针吗?

我知道哈希图在内部是如何工作的,只是想知道就数据结构而言,存储桶到底是什么。


问题答案:

不,存储桶是您要引用的数组中的每个元素。在早期的Java版本中,每个存储桶都包含一个Map条目的链接列表。在新的Java版本中,每个存储桶都包含条目的树形结构或条目的链接列表。

从Java 8的实现说明中:

/*
 * Implementation notes.
 *
 * This map usually acts as a binned (bucketed) hash table, but
 * when bins get too large, they are transformed into bins of
 * TreeNodes, each structured similarly to those in
 * java.util.TreeMap. Most methods try to use normal bins, but
 * relay to TreeNode methods when applicable (simply by checking
 * instanceof a node).  Bins of TreeNodes may be traversed and
 * used like any others, but additionally support faster lookup
 * when overpopulated. However, since the vast majority of bins in
 * normal use are not overpopulated, checking for existence of
 * tree bins may be delayed in the course of table methods.
 ...


 类似资料:
  • 问题内容: 假设我需要在Hashset中存储1000个对象,最好是让1000个包含每个对象的存储桶(通过为每个对象生成哈希码的唯一值)还是让10个存储桶大致包含100个对象? 具有唯一存储桶的一个优点是,我可以节省调用equals()方法的执行周期? 为什么一定要设置数量的桶并尽可能均匀地分布在它们之间的物体很重要? 理想的物斗比应该是多少? 问题答案: 为什么一定要设置数量的桶并尽可能均匀地分布

  • 从原理到应用分析什么是哈希? 一、什么是哈希? 哈希(hash):将任意长度的输入(关键字),通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值,通常哈希值代表了关键字的存储位置。 但是为什么要这样做呢?或者说,哈希是怎样来的呢? 哈希的出现解决了两个问题:存储和搜索。 1. 存储(数据结构):如果在容器中保存对象及其关联的键,并且不用键

  • 问题内容: 我在Redis中存储MessagePacked哈希时遇到问题。我在下面粘贴了一个测试用例。从Redis中提取打包数据并对其进行解压缩时,哈希会略有损坏。当哈希值超出一定长度时,似乎会发生这种情况,尽管我不能肯定地说。 我正在使用Redis 2.4.17(默认配置),Ruby 1.9.3p194,MessagePack 0.4.7和Redis gem 3.0.2。使用节点也会发生相同的问

  • 给定两个字符串,比如hashKey和hashVal,我将这两个字符串添加到一个hash对象中。在本例中,hashVal是一个表示整数的字符串,因此我在将其存储到表中之前将其解析为整数。 现在问题来了。存储在哈希表中的值实际上是一个int32对象,这使得后面使用内部表达式很麻烦。经过长时间的查找,我无法找到一种简单的方法来存储实际的int或提取存储为int而不是int32对象的值。 下面是我尝试做的

  • 问题内容: 我有一个简单的问题,当我想将SHA1哈希的结果存储在MySQL数据库中时发生: 我将散列结果存储在 VARCHAR 字段中多长时间? 问题答案: 我将使用可变长度的数据,但不使用固定长度的数据。由于SHA-1值 始终为 160位长,因此将仅在固定长度字段的长度上浪费一个额外的字节。 而且我也不会存储返回的值。因为每个字符只使用4位,因此需要160/4 = 40个字符。但是,如果每个字符

  • 问题内容: 我想在Python中实现HashMap。我想请用户输入。根据他的输入,我正在从HashMap中检索一些信息。如果用户输入HashMap的键,我想检索相应的值。 如何在Python中实现此功能? 问题答案: Python字典是一种内置的类型,支持键值对。 以及使用dict关键字: 要么: