gpt4 book ai didi

java - 哈希函数和 key

转载 作者:行者123 更新时间:2023-12-02 07:51:28 26 4
gpt4 key购买 nike

在阅读 Kathy Sierra 的书时,我偶然发现了这段代码片段:

m.put("k1", new Dog("aiko"));   // add some key/value pairs
m.put("k2", Pets.DOG);
m.put(Pets.CAT, "CAT key");
Dog d1 = new Dog("clover");
m.put(d1, "Dog key");
m.put(new Cat(), "Cat key");

映射用于以键和值格式存储内容。当我们输入“k1”或 new Cat() 作为 key 时,有人会告诉我 key 中实际存储的是什么吗?存储的是对这些对象的引用还是哈希码的值?我对此完全困惑。请指教。

如果您能指出我进一步阅读的 Material ,我将不胜感激。

最佳答案

map 是一个由 N 个桶组成的数组。

put() 方法首先对您的 key 调用 hashCode()。根据该哈希码,它使用模数来获取映射中存储桶的索引。

然后,它会迭代存储在与找到的存储桶关联的链表中的条目,并使用 equals() 方法将每个条目键与您的键进行比较。

如果某个条目的键与您的键相同,则其值将被新值替换。否则,将使用新键和新值创建一个新条目,并将其存储在与存储桶关联的链表中。

由于 Cat 实例和 String 实例永远不相等,因此永远不会通过放置与 Cat 键关联的值来修改与 String 键关联的值。

关于java - 哈希函数和 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189326/

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