Java修改map内的关键对象

2023-12-02

我在使用 JAVA 地图时遇到问题。我在地图中输入一个对象作为键。然后我修改了键,地图不再将该对象视为地图的键。即使对象内部的键已被相应修改。

我正在处理该对象CoreLabel来自斯坦福自然语言处理,但我猜它适用于一般情况。

Map <CoreLabel, String> myMap = new HashMap...
CoreLabel key = someCreatedCoreLabel
myMap.put(key, someString)
myMap.get(key) != null ----> TRUE
key.setValue("someValue");
myMap.get(key) != null ----> FALSE

我希望我说得足够清楚。问题是为什么最后一个陈述是错误的?我不是一个非常有经验的程序员,但我希望这是真的。也许与CoreLabel object?

我检查是否.equals()仍然成立,而且确实如此

for(CoreLabel token: myMap.keySet()) {
     if(key.equals(token))
        System.out.println("OK");
}

这在MapJavadoc 是危险的并且不太可能起作用:

注意:如果使用可变对象作为映射键,则必须非常小心。如果对象的值以影响等于比较的方式更改,而该对象是映射中的键,则未指定映射的行为。此禁止的一个特殊情况是不允许映射将自身包含为键。虽然允许映射将自身包含为值,但建议格外小心:在此类映射上不再明确定义 equals 和 hashCode 方法。

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

Java修改map内的关键对象 的相关文章

随机推荐

  • OpenGL 顶点数组对象存储顶点缓冲区名称和索引,还是仅存储索引?

    创建后 VAO 是否仅跟踪 VBO 索引 通过glBindVertexBuffer 或者哪些 VBO 名称与这些索引绑定 如果我使用指定绑定索引 例如 0glVertexAttribBinding在 VAO 创建期间 我可以在绘制调用之前将
  • 类型错误:列表索引必须是整数,而不是元组,出了什么问题[重复]

    这个问题在这里已经有答案了 Python 新手 求助 为什么我收到此错误 类型错误 列表索引必须是整数 而不是元组 imheight for i in range 0 len tables for j in range 0 len tabl
  • 匿名内部类中的接口如何工作?

    interface MyInter public void display class OuterClass8 public static void main String arg MyInter mi new MyInter public
  • 无法让 Django 提供静态文件

    我知道 SO 上有很多类似的线程 实际上有同样的问题 但我无法解决我的问题 Django版本 gt gt gt import django gt gt gt print django get version 1 6 2 我想从模板访问静态文
  • 如何将 jQuery 事件处理程序附加到 YouTube 电影?

    编辑 对那些已经回答的人表示抱歉 在我睡眠不足的状态下 我忘记了这种特殊情况是 YouTube 电影 而不是 JW FLV 播放器 我可以看到有更多关于与 YouTube 电影交互的文档 所以我会继续研究 但也欢迎提供更多信息 我正在使用
  • while 循环确定输入的值是否为 double

    我正在做一个相当大的项目 这只是包含在其中 基本上 我创建了一个获取员工信息的类 我们需要它 以便用户必须输入双倍的工资率 说 8 点 注意用户不能添加美元符号 例如 8 00 否则会提示用户发生错误 然而 当我测试运行代码时 代码没有使用
  • 如何格式化 Ansible 输出

    我想格式化 Ansible 输出 my local SUCCESS rc 0 gt gt 116G my local2 SUCCESS rc 0 gt gt 116G to my local gt gt 116G my local2 gt
  • 服务器如何因 chmod 777 而变得容易受到攻击?

    我经常读到类似这样的文章 chmod 777 很糟糕 我想知道 当我执行时我如何变得脆弱chmod 777在一个文件上 我可以重现的真实世界示例是什么 It 允许文件系统内容查看和 或修改由任何人 假设攻击者已经具有通用系统访问权限 这在共
  • 如何在Python中以指定位数的二进制字符串形式返回数字

    可能是一个愚蠢的问题 但是在 python 中是否有一种简单的方法可以自动用零将数字填充到固定长度 我在 python 文档中找不到这个 但我可能还不够努力 e i 我希望 bin 4 返回 00100 而不仅仅是 100 是否有一种简单的
  • 确定 WPF RichTextBox 中选定的 InlineUIContainer

    我想确定 WPF RichTextBox 中当前插入符位置是否存在 InlineUIContainer 或 BlockUIContainer 目前我有一个 RichTextBox 如下
  • Message内部逻辑

    我试图找出其中的逻辑Message行为 考虑评估以下内容 On Sin 1 1 评估完以上内容后 您将得到大约 830 Messages in 数学 7 所有这些Messages在生产过程中出现了 Sin argx Sin called w
  • 正则表达式 - 匹配后面没有特定模式的字符

    我想要一个正则表达式 尽可能高效 因为我使用 C 并且引擎效率不高 来匹配任何包含 且不立即跟随的字符串 1 一个字母 a zA Z or 2 NUMBERS a zA Z or 3 数字 a zA Z 所以我想匹配这样的字符串 dsfdf
  • C++ 中的 fseek 函数会刷新缓冲区中的数据吗?

    我们知道 调用 fprintf 或 fwrite 等函数不会立即将数据写入磁盘 而是会缓冲数据直到达到阈值 我的问题是 如果我调用 fseek 函数 这些缓冲数据会在查找新位置之前写入磁盘吗 或者数据仍在缓冲区中 并写入新位置 cheng
  • Qt中线程间通信的实现

    我在实现以下场景时遇到问题 我的问题陈述是这样的 我有 3 个线程 ThreadCamera 用于从相机中抓取帧 用于处理帧的 ThreadProcess 使用 OpenCV 对捕获的图像 帧进行一些图像处理 和用于显示图像的主 GUI 线
  • 如何将图像源设置为哈巴狗模板中的变量?

    在创建电影信息平台时 我想打印图像海报 我无法将图像的来源设置为 pug 中的变量 each movie in movies col md 3 style margin bottom 20px text center img src mov
  • 如何从浏览器意图获取授权令牌?

    抱歉我的英语不好 我会尽力尽可能简单地解释我的问题 我正在尝试制作一个与 Yandex API 配合使用的应用程序 在他们的帮助页面上 我读到您应该从用户登录的应用程序启动浏览器 然后通过注册 URI 回调返回到应用程序 我现在拥有的 Ov
  • Magento 错误:模块“Mage_Api”需要模块“Mage_Core”

    我的生产站点无缘无故地消失了 我知道我安装的最后一个扩展 但那是三天前的事了 我在每个页面上都收到此错误 a 4 i 0 s 46 Module Mage Api requires module Mage Core i 1 s 702 0
  • 有人可以帮助解释为什么不使用 SQL JOIN 是不好的做法和错误吗? [复制]

    这个问题在这里已经有答案了 可能的重复 显式与隐式 SQL 连接 SQL JOIN USING ON 或 WHERE 之间有区别吗 我正在检查由不太熟悉 SQL 的开发人员维护的代码 我在他的代码中经常看到如下片段 SELECT FROM
  • 找不到“System.IdentityModel.Tokens.UserNameSecurityToken”令牌类型的令牌身份验证器。

    我正在尝试让第三方 Java 客户端与我编写的 WCF 服务进行通信 收到消息时出现以下异常 无法找到令牌验证器 System IdentityModel Tokens UserNameSecurityToken 令牌类型 代币 根据当前的
  • Java修改map内的关键对象

    我在使用 JAVA 地图时遇到问题 我在地图中输入一个对象作为键 然后我修改了键 地图不再将该对象视为地图的键 即使对象内部的键已被相应修改 我正在处理该对象CoreLabel来自斯坦福自然语言处理 但我猜它适用于一般情况 Map