gpt4 book ai didi

java - HashMap 中的键条目为空字符串或 null

转载 作者:行者123 更新时间:2023-12-02 01:33:38 25 4
gpt4 key购买 nike

在 Hashmap 中,对于空键,索引为 0,但对于空字符串,索引是什么。我调试它,发现它在第 0 个索引处创建一个链表并将两个值存储在那里。

那么为什么空字符串值存储在第 0 个位置,如果使用空字符串的 HashMap 计算索引,那么空字符串的哈希码是什么。

HashMap<String, String> hm= new HashMap<>();
hm.put("", "");
hm.put(null, null);

最佳答案

至少在 Oracle 的 Java 8 实现中,空字符串的哈希码将为 0

这是 Java 1.8 中用于计算哈希的方法的 java.util.HashMap 类的源代码的摘录:

static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}

这是计算哈希值的相关方法。

所以本质上这就是它计算空字符串的哈希码的方式:

System.out.println(("".hashCode()) ^ ("".hashCode() >>> 16));

无论如何,null 的哈希码将为 0。请使用 hash 方法查看上面的代码。

关于java - HashMap 中的键条目为空字符串或 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55589901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com