我理解使用不可变对象作为映射键更好。但是,使用默认的hashCode()方法(当然,我不覆盖equals()方法)的可变对象如何?这也应该可以,因为默认的hashCode()使用对象内存地址?
我有什么好怀念的吗?
发布于 2019-11-01 19:06:44
Mutuable对象作为一个键使用默认的equals()和hashcode()是没有用的。
e.g
Map.put(新对象(),“值”);
当你想得到那个价值的时候,
Map.get(新对象());//这将始终返回null
因为使用新对象(),将生成新的哈希码,并且它不会指向保存值的预期桶号,如果最终桶号相同,它将无法匹配哈希码,甚至等于,因此它总是返回NULL。
https://stackoverflow.com/questions/22483589
复制相似问题