面试题8问:
1. 如果new HashMap(19),bucket数组有多大?
答:hashmap数组大小初始为2的四次方,16,且每一次都是以2倍增长,数组大小总是2的次方倍;
所以给19大小的空间,需要的数组长度为最接近19的2的次方倍,也就是2的五次方32;
2. HashMap什么时候开辟bucket数组占用内存?
答:第一次放数据put时候,且初始化空间大小是16;
3. HashMap何时扩容?
答:超过负载因子(0.75)时候,(负载因子:填入表中的元素个数/散列表的长度),且扩容是2倍扩容的;
4. 当两个对象的hashcode相同时会发生什么?
答:会发生哈希冲突;(哈希冲突:不同关键字通过相同哈希哈数计算出相同的哈希地址,该种现象称为哈希冲突或哈希碰撞)
5. 如果两个键的hashcode相同,要如何取值对象?
答:通过equals方法来取值对象,遍历与hashcode值相等时相连的链表,直到相同或者没有找到(null)