将重复键插入哈希映射

时间:2012-12-20 16:11:38

标签: java

我已经创建了哈希映射,当我调试它时,我看到我有重复键。 我没有覆盖hashCode()&密钥中的equals(Object obj) - Object1 我想知道它会如何影响地图搜索的性能?

private HashMap<Object1,Object2> map = new HashMap<Object1,Object2>();

4 个答案:

答案 0 :(得分:4)

地图中不可能有重复的密钥,您有不同的“显示”相同的密钥(可能基于他们的toString()?),因为您没有覆盖equals()和{{ 1}},但实际上键是不同的。

这意味着为了从您的Map获取所有值,您需要保留您创建的每个键并将其存储在某个地方,这对我来说无法实现地图。

摘要:

覆盖hashCode()equals(),然后将您的键/值对放入地图中。

答案 1 :(得分:0)

它不会给你带来糟糕的表现(更多相反),但它会阻止你的对象被视为重复。

如果希望将每个实例视为不同的键,请不要覆盖equals和hashCode方法。但这意味着您需要完全相同的实例才能在地图中检索您的值。

如果要使用其他实例检索值(例如,使用相同的id),则需要覆盖这些方法。

但问题不是表演问题。

答案 2 :(得分:0)

你怎么能有重复的钥匙?您并没有覆盖equals() hashcode(),因此您不能说&#34;重复的对象&#34;,因为这正是这些方法的目的。您可能调试并查看了不同的值,但对于JVM,它们不等于默认的Object.equals()Object.hashcode()(实际上是最接近的超类)

答案 3 :(得分:0)

您不能拥有重复键,但您可以拥有重复值。你可能会对关键和价值感到困惑。