http://blog.sina.com.cn/s/blog_7d17f3cc01014dva.html文章中说道一句话,“在使用自定义对象做key的时候,一定要去实现hashcode方法,不然hashmap就成了纯粹的链表,查找性能非常的慢,添加节点元素也非常的慢”
我非常不理解,主要不理解这个hashcode是怎么算的呢,如果根据对象地址来算的话,也不会出现上面说的问题
http://blog.sina.com.cn/s/blog_7d17f3cc01014dva.html文章中说道一句话,“在使用自定义对象做key的时候,一定要去实现hashcode方法,不然hashmap就成了纯粹的链表,查找性能非常的慢,添加节点元素也非常的慢”
我非常不理解,主要不理解这个hashcode是怎么算的呢,如果根据对象地址来算的话,也不会出现上面说的问题
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
很有兴趣讨论一下这个hashcode().
看代码可以知道, hashcode()是一个native函数, 但实际JVM会不会直接用对象地址来做hashcode有待探讨, 因为现代的JVM 堆都是分代管理的, 一个Object很可能在一次 GC后改变其对象地址.而对一个对象来说, 其生命周期内的hashcode是不会变的.
JVM中Object.hashCode()实现