使用 hashmap 时什么时候需要重写 hashcode() 和 equals() [重复]

2024-03-19

我现在在这个问题上挣扎了一段时间。我知道,如果您使用哈希集,如果您处理的对象与 String 不同(我猜相同的字符串具有相同的哈希码),则必须覆盖 hashcode 和 equals,并选择要考虑的属性,因此对象是唯一的财产。

但是 hashmap 是怎么回事呢?您是否需要以及何时需要重写 hashcode() 和 equals() ?我很确定你会因为这个问题而让我心碎,但如果有人向我解释,我会非常高兴。明天我有重要的考试,这真的让我很烦恼!

我特别要求哈希图!对于哈希集,我想我理解这个想法。我还阅读了 hashcode() 和 hashfunction


答案是肯定的。

在 Java 中,您可以在集合中添加对象。假设您想要找到一个名为 A 的对象,并将其添加到名为 L 的列表中。假设这是您使用自己的类定义的对象,并且您重写了方法 Object#equals()。当您循环遍历列表 L 时,您正在测试这些对象中的任何一个是否等于对象 A。如果 equals 方法返回 true,则您已找到对象。

当您将对象添加到任何 HashTable、HashMap 或 HashSet 时,将使用 hashcode 方法生成一个数字。该数字应该尽可能唯一。同一类的对象可能在其实例字段中具有不同的值,但它们的 hashcode 方法产生相同的值。如果您有某个类的两个对象 X 和 Y,并且它们具有相同的哈希码,并且您将它们都放入 HashMap Q 中,那么它们最终会位于同一个存储桶 P 中。假设 P 有两个对象。假设您将 Q 传递给具有 X 和 Y 的方法。该方法想要检查 Q 中是否存在 X。Q 将获取 X 并获取哈希码。 Q 将使用哈希码来查找存储桶。桶将是P。桶P有两个对象。此时使用 equals 方法通过将桶中的每个对象与 X 进行比较来确定桶中是否包含 X。如果桶中的某个对象与 X 匹配,则 X 存在于 Q 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 hashmap 时什么时候需要重写 hashcode() 和 equals() [重复] 的相关文章

  • 相当于 java PBKDF2WithHmacSHA1 的 Python

    我的任务是构建一个 API 的使用者 该 API 需要带有 UNIX 时间种子值的加密令牌 我看到的示例是使用我不熟悉的 Java 实现的 在阅读文档和其他堆栈文章后一直无法找到解决方案 使用javax crypto SecretKey j
  • Java中如何合并两个数组?

    它不是连接而是合并两个数组 使它们成为名称值对的数组 firstarray a aa aaa secondarray b bb bbb result a b aa bb aaa bbb 最好的方法是什么 in Java public sta
  • 从SQLite列中获取所有数字字符串并进行总和计算

    我是 Android 和 SQLite 的新手 我在 SQLite 中有一个只有数字的 AMOUNT 列 我可以在 ListView 中显示它 但我无法找到任何我理解的方法来将它们全部添加并显示在 TextView 中 这是数据库助手 im
  • selenium 2.0 中的 isElementPresent

    大家好 我正在使用 webdriver 所以如果我想使用 selenium s rc 函数 isElementPresent 我必须模拟 selenium rc 所以我会执行以下操作 import org openqa selenium B
  • Java中的字节和字符转换

    如果我将一个字符转换为byte然后回到char 那个角色神秘地消失了 变成了别的东西 这怎么可能 这是代码 char a line 1 byte b byte a line 2 char c char b line 3 System out
  • 如何访问EmbeddedSolrServer实例的管理界面?

    在我的网络应用程序中 我正在运行org apache solr client solrj embedded EmbeddedSolrServer出于调试目的 我想访问管理界面 这就是我实例化服务器的方式 new EmbeddedSolrSe
  • 在 Spring Webflux 中执行阻塞 JDBC 调用

    我使用 Spring Webflux 和 Spring data jpa 使用 PostgreSql 作为后端数据库 我不想在进行数据库调用时阻塞主线程 例如find and save 为了实现同样的目标 我有一个主调度程序Controll
  • JSF-2 应用程序中的服务器端计时器

    在我正在开发的 JSF 2 应用程序中 当用户执行操作时 我需要启动服务器端计时器 这个计时器必须与应用程序本身相关 因此它必须在用户会话关闭时继续存在 为了解决这个问题 我想使用 java util Timer 类在应用程序范围的 bea
  • Java:将二维字符串数组打印为右对齐表格

    是什么best打印a的单元格的方法String 数组作为右对齐表 例如 输入 x xxx yyy y zz zz 应该产生输出 x xxx yyy y zz zz 这似乎是一个should能够完成使用java util Formatter
  • 使用 SSL 和代理设置的 Rest 客户端获取连接超时

    我正在使用带有忽略 ssl 的 Rest 客户端 它工作正常 但在将来我尝试使用客户端证书进行的生产中将无法工作 我有 ca 证书和客户端证书 我用它创建了一个客户端 但我收到错误 Exception in thread main com
  • Map:为 Integer 和 Double 类型定义方法,但不为 String 类型定义方法

    我正在尝试定义一个方法putIfGreaterThan 为了我的新Map class 给定一个键 仅当新值大于旧值时 它才会用新值替换旧值 我知道我可以通过组合来实现这一点 通过有一个private final Map
  • Java:从 ScriptEngine javascript 返回一个对象

    我正在尝试使用 Java 来评估 javascript脚本引擎 https docs oracle com javase 7 docs api javax script ScriptEngine html班级 这是我正在尝试做的事情的一个简
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • 无法删除临时文件夹(有时)

    当我启动应用程序时 我创建一个临时文件夹 public static File createTempDir String name throws IOException File tempDir File createTempFile na
  • 如何组合 3 个或更多 CompletionStages?

    如果有 2 个 CompletionStages 我可以将它们与thenCombine method CompletionStage a aCompletionStage getA CompletionStage b bCompletion
  • java charAt() 和startsWith() 哪个更快? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的问题是 如果我想检查特定索引中字符串的一个字符 仅检查一个字符 哪种方法非常有效charAt or startsWith 我的意思是 据我所
  • Java 中的连接路径

    In Python我可以连接两条路径os path join os path join foo bar gt foo bar 我正在尝试在 Java 中实现相同的目标 而不用担心是否OS is Unix Solaris or Windows
  • 使用 Retrofit 获取原始 HTTP 响应

    我想从我的 API REST 获取原始 http 响应 我尝试过这个界面 POST login FormUrlEncoded Call
  • Java 9:AES-GCM 性能

    我进行了一个简单的测试来测量AES GCM https en wikipedia org wiki Galois Counter Mode表现在Java 9 通过在循环中加密字节缓冲区 结果有些令人困惑 本机 硬件 加速似乎有效 但并非总是
  • 隐藏 JTable 临时列

    我正在使用 JTable 显示数据库中的数据 现在我想通过 Jcombobox 过滤我的 jtable 我正在使用 Jcombo 框 其中包含 030 024 045 等值 这些值已在 jtable 中设置为列标题 当我单击组合时 选定的列

随机推荐

  • 如何从 Swagger API 声明生成 JSON-Schema

    我有 Swagger API 声明 用于使用招摇 v 1 2 https github com wordnik swagger spec blob master versions 1 2 md 我对 Swagger 的最初感觉是它非常接近
  • SQL Server - 同义词提示和技巧? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在xamarin表单中移动右侧搜索栏的搜索图标

    如何在 Xamarin 表单中移动右侧搜索栏的搜索图标 我正在寻找安卓和IOS 对于 Android 我使用了 SearchBarRenderer 下面的代码不起作用 有人知道该怎么做吗 请帮忙 protected override voi
  • 如何在AngularJS中创建全局变量

    我遇到这个问题 当您注册时 您会进入 用户 页面 它应该说 欢迎 用户名没有出现在网页上 原因我不确定 请帮助这里是plunkr http plnkr co edit qB3Gkeq5ji1YQyy0kpGH p preview http
  • 如何在Python中找到素数

    我是Python新手 我正在尝试计算给定范围内的素数 开发者分享的一些答案如下 import math def count primes num out for i in range 3 num 2 if all i j 0 for j i
  • 如何使用车把模板显示json对象键和值?

    我已经开始学习handlebar js 我正在努力显示 json 数据 我的 json 看起来像这样 var data record1 first name john city newyork name brit
  • CMPXCHG16B 正确吗?

    尽管我不确定为什么 但这似乎并不完全正确 建议会很好 因为 CMPXCHG16B 的文档非常少 我没有任何英特尔手册 template lt gt inline bool cas volatile types uint128 t src t
  • 使用 netbeans 中另一个 jFrame 的按钮关闭 jFrame?

    我在 netbeans 中创建了两个 jFrame 第一个被命名为MainFrame另一个是ExternalFrame 每个都有一个按钮 单击按钮MainFrame将设置ExternalFrame可见与MainFrame仍然在屏幕上 我想处
  • 如何Python请求像我的浏览器一样跟随URL

    我注意到 Python 的 requests 库并不像我的浏览器那样遵循某些 URL 重定向 例如 当我这样做时 response requests get http www bbmt org verify False allow redi
  • 为什么 Python 有 __ne__ 运算符方法而不仅仅是 __eq__?

    答案here https stackoverflow com questions 4352244 python implementing ne operator based on eq给出您想要的案例的手动参考 ne 返回除逻辑倒数之外的其
  • 带构造函数的抽象类,强制继承类调用它

    我有一个abstract带有构造函数的类XYZ string name 我还有一个继承自该抽象类的类 如何强制遗传要调用的类base string name 现在我可以使用new Inherited 并且它不会调用基本构造函数 我想强制用户
  • Mathematica 下调 Lhs 值

    有谁知道 Mathematica 中是否有一个内置函数可以获取 downvalue 规则的 lhs 没有任何保留 我知道如何编写代码来做到这一点 但这对于内置程序来说似乎已经足够基本了 例如 a 1 2 a 2 3 BuiltInIDoNo
  • Xcode 构建和运行错误:“进程启动失败:无法获取进程 216 的任务”

    更新到 Mavericks 并确保我也安装了 Xcode 的最新更新后 Xcode 突然无法在设备上启动应用程序 它会在我的 iPhone 上安装该应用程序 但在运行之前会抛出以下错误 进程启动失败 无法获取进程 216 的任务 这是更新后
  • Docker 中的 PostgreSQL - pg_hba.conf 允许从主机访问容器

    我想在 Docker 容器内运行 PostgreSQL 我正在构建自己的 Docker 镜像 因为我想包含 PostgreSQL 扩展 我应该编辑pg hba conf配置文件到 允许来自其他容器的访问 允许来自主机的访问 第一个非常简单
  • 无法读取未定义的属性“标签”

    我刚刚学习 Chart js 的工作原理 因此我直接使用了 Chart js API 页面上的示例代码 但它似乎不起作用 我将以下代码放入脚本标记中 并收到 无法读取未定义的属性 标签 错误 不确定这个错误意味着什么 function va
  • 从通用约束 Dart 调用静态方法

    我正在尝试从收到的泛型类型中调用静态方法 这可能吗 此外 我应用了类型约束 以便仅从其父类操作该对象 这是我想要实现的目标的一个简短示例 class A static func print A class B extends A stati
  • WS-Security 不适用于 CXF

    我正在尝试使用 Apache CXF 开发支持 WS 安全的 Web 服务 我正在遵循的教程是here http www benmccann com blog apache cxf tutorial ws security with spr
  • jQuery getJSON 请求在有效请求上返回空

    我正在尝试从 Apple 的 iTunes JSON 服务获取一些 JSON 请求很简单 如果您在浏览器中访问该 URL 您将看到一些格式良好 由 jsonlint com 支持 的 JSON 然而 当我使用以下 jQuery 发出请求时
  • 使用 Web Api 2 Angular 下载 csv 文件

    我正在尝试使用 web api 2 和 Angular js 下载 csv 文件 这是我的控制器代码 public IHttpActionResult ExportCsvData var stream new FileStream Test
  • 使用 hashmap 时什么时候需要重写 hashcode() 和 equals() [重复]

    这个问题在这里已经有答案了 我现在在这个问题上挣扎了一段时间 我知道 如果您使用哈希集 如果您处理的对象与 String 不同 我猜相同的字符串具有相同的哈希码 则必须覆盖 hashcode 和 equals 并选择要考虑的属性 因此对象是