解析源码之前的几个疑问?
1.HashMap在什么时候开辟的内存?
2.不带参数的构造方法,默认哈希表的数组大小是多少?
3. HashMap<String,Integer> map = new HashMap<>(19);此时分配的内存是多少?
4.一般地,哈希表示数组+链表的方法进行存储,在满足什么条件的时候链表会变成树?
5.当HashMap扩容的时候需要注意什么?
6.hashcode与equals的区别?
下面就看看源码:
当看完以上的源码,我想1-4的问题就已经解决了。那么当HashMap扩容的时候需要注意什么?这个时候,每一个元素都要进行重新哈希。hashcode与equals有什么区别?两个对象的hashcode相同,equals不一定相同;两个对象的equals相同,hashcode一定相同。