gpt4 book ai didi

java - 你能解释一下这个 Java HashMap 键冲突吗?

转载 作者:行者123 更新时间:2023-12-01 06:59:04 26 4
gpt4 key购买 nike

我有一个 HashMap 并按以下方式使用:

HashMap<SomeInterface, UniqueObject> m_map;

UniqueObject getUniqueObject(SomeInterface keyObject)
{
if (m_map.containsKey(keyObject))
{
return m_map.get(keyObject);
}
else
{
return makeUniqueObjectFor(keyObject);
}
}

我的问题是,我看到不同类的多个对象与 m_map.containsKey(keyObject) 上的相同键匹配。

这是我的问题:

  1. 这可能吗? Map 接口(interface)表示它使用 equals() 来比较键是否不为空。我没有在任何 SomeInterface 类中重写 equals() 。这是否意味着 equals 方法可能是错误的?

  2. 如果上述情况为真,那么如何让 HashMap 仅在 equals() 上返回 true(如果它们实际上是同一对象而不是副本)?这可以通过 if (object1 == object2) 来实现吗?在 Java 开发的早期,我被告知应该避免这样做,但我从未发现何时应该使用它。

提前致谢。 :)

最佳答案

我强烈怀疑您误诊了这个问题。如果您没有在任何地方重写equals(并且您没有子类化任何其他重写equals的东西),那么您确实应该具有“身份”行为。

说实话,如果我听到事实并非如此,我会感到震惊。

如果您可以制作一个简短但完整的程序来演示问题,这将使其更容易调查 - 但目前,我肯定会仔细检查您对看到不同内容的怀疑对象被视为相等的键。

关于java - 你能解释一下这个 Java HashMap 键冲突吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335207/

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