gpt4 book ai didi

Java Map 实现不是基于 HashCode

转载 作者:搜寻专家 更新时间:2023-11-01 01:05:20 25 4
gpt4 key购买 nike

是否有一些不使用 HashCode 的 java.util.Map 实现?

我有以下问题:

  1. 我将与另一个对象相关联的对象存储在 HashMap 上;
  2. 更改第 1 步中使用的关键对象的属性;
  3. 由于 hashcode 用于在 HashMap 的常规实现上存储键,当我在 HashMap 上执行 get() 时,我得到 null,因为旧对象 hashCode 在第 1 步不同。

有解决办法吗?或者我真的应该只为我的 equals/hashCode 方法使用不可变字段吗?

最佳答案

IdentityHashMap 使用Object identity 代替hashCode;然而,这确实意味着您需要将原始对象用作键来检索 map 的值。其他选项将重新定义哈希码以排除对象的可变部分,或者 - 如果您由于某种原因无法重新定义哈希码 - 将对象包装在另一个提供稳定哈希码的对象中。

关于Java Map 实现不是基于 HashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9141659/

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