Ale*_*man 28
它们将被添加到同一个存储桶中,equals()并将用于区分它们.每个存储桶都可以包含具有相同哈希码的对象列表.
从理论上讲,您可以为给定类的任何对象返回与哈希代码相同的整数,但这意味着您将失去哈希映射的所有性能优势,并且实际上会将对象存储在列表中.
小智 7
在HashMap中,键及其关联值存储在存储桶中的链接列表节点中,并且基本上使用equals()方法而不是hashcode在hashmap中比较键.
hm.put("a","aValue"); // Suppose hashcode created for key "a" is 209
hm.put("b","bValue"); // Here hashcode created for key "b" is 209 as well.
Run Code Online (Sandbox Code Playgroud)
a.equals(b)返回true,bValue将替换aValue并将bValue返回.a.equals(b)回报false,另一个节点将在遗愿清单创建,所以当你打电话get("b"),你会得到bValue,因为a.equals(b)是false.