当前位置: 首页 > 知识库问答 >
问题:

HashMap对用户定义的对象失败?

符学
2023-03-14

如果我使用一个HashMap,其中键是定义类的对象,那么HashMap还会提供O(1)性能吗?

我认为它不应该给O(1)性能,因为用户定义对象的哈希键只返回键的地址,所以会有更多的冲突。

共有1个答案

顾俊哲
2023-03-14

O(1)不是HashMap中关键字搜索的精确复杂度,其次它取决于你如何定义你的hashCode()equals方法。

如果你遵循2个相等的对象有相同的哈希码的契约,如果对象有相同的哈希码,那么它们可能相等,也可能不相等,那么是的,你将实现O(1)的appox.复杂性。

编辑:为了保持O(1)的复杂性,你必须提供一个好的散列函数来进行良好的分布。

 类似资料:
  • 问题内容: 即使我有一个自定义类的两个数据对象,它们与所有变量都相等,assertEquals()方法还是失败了。我在这里想念什么? 问题答案: 在equals()函数的帮助下,进行比较以检查其是否相等。您需要在自定义类中重写此方法。 还请确保您也重写hashCode()方法。

  • 问题内容: 就像我们使用__ToString一样,有没有一种方法来定义铸造方法? 问题答案: 无需在php中键入强制类型转换。 编辑: 由于这个话题似乎引起一些混乱,我想我要详细说明一下。 在Java之类的语言中,有两种可能带有类型。编译器有一个关于类型的概念,而运行时还有一个关于类型的想法。编译器的类型与变量相关,而运行时引擎则跟踪值的类型(已将其分配给变量)。变量类型在编译时是已知的,而值类型

  • 嗨,我正在尝试学习hashcode()和equals()方法的目的。我尝试了以下程序。 输出: 我有两个疑问: 1) 我认为HashMap将包含一个条目,因为两个对象(ob1和ob2)的hascode是相同的。有人能解释为什么HashMap中有两个条目吗? 2)为什么返回false?

  • 问题内容: 所以我有一堂课,叫做。 我想打印此类的对象列表,如下所示: 但是它显示了这样的输出: 实际上,我想打印每个对象的值。有什么办法吗? 问题答案: 如果只想为每个对象打印标签,则可以使用循环或列表理解: 但是要回答您的原始问题,您需要定义方法以正确获得列表输出。它可能像这样简单:

  • 问题内容: 我是泛型新手,所以不确定我的问题的答案是否是真的。在下面的代码中,对一个对象条目的键进行大小写需要什么? 它似乎很容易被替换 更多参考: 问题答案: 这是一种极端的优化措施,对于通用编程实践来说可能不是必需的。这是一个可以回答您问题的讨论。下面的语句是从该帖子中复制的: 这是Doug Lea流行的一种编码风格。这是一个极端的优化,可能没有必要。您可以期望JIT进行相同的优化。(您可以尝

  • 问题内容: 我有以下课程: 当我执行以下代码时: 产生的json字符串如下所示: 我的问题是让上面的json字符串反序列化回一个 宾语。 我的反序列化代码如下所示: 它使用正确的键反序列化为HashMap,但不会为这些值创建Theme对象。我不知道在readValue()方法中要指定什么而不是“ HashMap.class”。 任何帮助,将不胜感激。 问题答案: 你应该创建特定的Map类型并将其提