两个holiday的值都是完全相同的但就是获取不到,查看了源码发现:put和get时计算得到的hash值不同。为什么红色框不用equese? 请问这种情况需要怎么获取值?或者还有没有其他可以存重复key的键值对集合?
啥使用场景啊非得用 IdentityHashMap?HashMap 满足不了需求? 不是 get / set 计算哈希不等,而是 IdentityHashMap 比较的是引用,你这俩 String 是一个对象吗?不是的话它能相等吗? 换句话说你比较字符串的时候用 == 吗? 硬要用不是不行,你把你这个 holiday 存成公共成员(比如静态常量),都用这一个对象当 Key 就行了。 如果你的 Key 是动态生成的,那么根本就不应该用这个类。
啥使用场景啊非得用
IdentityHashMap
?HashMap
满足不了需求?不是 get / set 计算哈希不等,而是
IdentityHashMap
比较的是引用,你这俩String
是一个对象吗?不是的话它能相等吗?换句话说你比较字符串的时候用
==
吗?硬要用不是不行,你把你这个 holiday 存成公共成员(比如静态常量),都用这一个对象当 Key 就行了。
如果你的 Key 是动态生成的,那么根本就不应该用这个类。