我浏览了HashMap的源代码,并提出了一些问题。PUT 方法采用键和值并执行
>
使用从上一步获得的哈希计算这对的桶位置
public V put(K key, V value) {
int hash = hash(key.hashCode());
int i = indexFor(hash, table.length);
.....
}
static int hash(int h) {
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);
}
static int indexFor(int h, int length) {
return h & (length-1);
}
例:
问题:
提前谢谢,Akh
让我们更详细地讨论,hashmap如何初始化bucket大小?
以下代码来自HashMap.java
而(i
如果您通过初始10,则上述代码用于使功率大小为2。因此使用上述代码HashMap初始化存储桶大小16;
以下代码用于计算存储桶索引,
static int indexFor(int h, int length) {
return h & (length - 1);
}
哈希地图通常会使用哈希代码来修改存储桶的数量。发生冲突时会发生什么取决于实现(不确定Java的哈希图)。有两种基本策略:保留落在存储桶中的项目列表,或者如果您的存储桶已满,则向前跳到其他存储桶。我的猜测是哈希地图使用列表存储桶方法。
对于你的第一个问题:地图总是使用2的幂作为大小(如果你给它一个容量10,它实际上将使用16),这意味着索引
不清楚你的第二个和第三个问题与什么有关。我不认为<code>HashMap<code>会重新分配一切,除非需要。
问题内容: 现在,Amazon Product API在我尝试生成ushing Python的每个请求中都需要签名。 我挂断的步骤是这一步: “使用上面的字符串与我们的“虚拟”秘密访问密钥:1234567890,使用SHA256哈希算法计算符合RFC 2104的HMAC。有关此步骤的更多信息,请参见编程语言的文档和代码示例。” 给定字符串和私钥(在本例中为1234567890),如何使用Pytho
如果我在hashmap中输入一个键和值,并且基于键hashcode生成的索引大于15,并且映射大小仍然小于阈值(即12),会发生什么? 提前谢谢。
当人们说Hashmap比列表更快时,我对Hashmap或Hashtable的概念更困惑。我很清楚散列的概念,其中的值存储在给定密钥的散列代码中。 但是,当我想检索数据时,例如,它是如何工作的,我在一个HashMap中存储n个带有n个不同键的字符串。如果我想检索与特定键关联的特定值,它将如何在O(1)的时间内返回它?因为散列密钥将与所有其他密钥进行比较,对吗?
我刚刚讨论了散列码的概念,遇到了一行:
问题内容: 我有一个哈希表,其键的模式为USER_TEL,例如: 现在,我想获取密钥中具有相同TEL的所有用户的地址。 我想出的是: 我得到而不是价值观。 问题答案: 您应该使用HSCAN命令。 例如: 更新资料 Python实现:
keytool-exportcert-alias diego-keystore“c:\users\diego\desktop\celuchat.keystore”“c:\openssl\bin\openssl.exe”sha1-binary“c:\openssl\bin\openssl.exe”base64 celuchat.keystore是我在导出签名的应用程序时使用的密钥库,当keytool