IdentityHashMap这种情况要怎么取值?

mcck_hyj
  • 196

两个holiday的值都是完全相同的
image.png
但就是获取不到,查看了源码发现:put和get时计算得到的hash值不同。
image.png
为什么红色框不用equese?

请问这种情况需要怎么获取值?
或者还有没有其他可以存重复key的键值对集合?

回复
阅读 2.1k
2 个回答
然后去远足
  • 33.4k
✓ 已被采纳

啥使用场景啊非得用 IdentityHashMapHashMap 满足不了需求?

不是 get / set 计算哈希不等,而是 IdentityHashMap 比较的是引用,你这俩 String 是一个对象吗?不是的话它能相等吗?


换句话说你比较字符串的时候用 == 吗?


硬要用不是不行,你把你这个 holiday 存成公共成员(比如静态常量),都用这一个对象当 Key 就行了。

如果你的 Key 是动态生成的,那么根本就不应该用这个类。

所以你为什么要用IdentityHashMap....
你用HashMap不就行了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏