java - java hashcode()面试题

标签 java collections

我最近参加了一次面试,被问到以下问题。

有两个具有相同哈希码的对象。我将这两个对象插入到 HashMap 中。

hMap.put(a,a); hMap.put(b,b);

其中 a.hashCode()==b.hashCode()

现在告诉我 HashMap 中将有多少个对象?

我回答只有一个对象,因为 hashcode 相等,所以两个对象将相等,并且 hashmap 不允许重复键。请告诉我我的理解是否正确?

最佳答案

可以有两个不同的元素具有相同的哈希码。所以你的答案是不正确的。唯一可以保证的是,如果两个元素具有不同的哈希码,那么它们就是不同的。当两个元素具有相同的哈希码时,Java 会使用等于来进一步区分。

所以答案是一两个对象。

关于java - java hashcode()面试题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6691803/

相关文章:

java - SLE4428 智能卡问题

c# - 使用 lambda 表达式创建带反射的对象

c# - 如何测试 IEnumerable<int>

java - 具有可配置删除策略的并发固定大小收集

java - 在 Java 关键部分中,我应该同步什么?

java - JFreeChart 创建分层时间序列

java - ArrayList 中的重复元素 (java)

java - pathParameters 文档异常(未找到 urlTemplate)

java - 如何迭代列表以仅获取特定属性

java - 从java中的 map 中检索有序列表