我对一些 yourkit 快照感到困惑,这似乎表明在特定堆栈中 hashmap.put()
被证明是昂贵的。
假设这个映射的键是一个非常复杂的对象,它没有重写 equals()
或 hashCode()
HashMap.hash()
或 Object.hashCode()
在某些情况下真的可能代价高昂吗?
最佳答案
理论上有可能,但可能性很小。
如果您确实使用Object.hashcode()
,则委托(delegate)给相对便宜的System.identityHashCode(Object)
。此外,身份哈希码不应该给你碰撞热点......除非你真的很不幸。
如果您在 HashMap.hash()
和 Object.hashCode()
中看到性能热点,那么原因可能是您只是做了很多事情HashMap
查找。
关于java - HashMap put 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18021309/