一次真实的HashMap面试之问

一问:什么是hashMap

一答:hashmap是用来存储键值对的集合类,可以接受null键值对。

二问:hashmap的工作原理

二答:HashMap是基于hasing的原理,使用put存储对象,使用get获取对象。当使用put方法时,首先获取键的hashcode,返回的hashcode用来寻找bucket位置来存储Entry对象。

三问:当两个键的hashcode相同,如何插入键值对,如何获取值对象

三答:插入键值对,hashcode相同,他们的bucket位置就是相同,碰撞会发生,hashmap使用链表存储对象,对应的Entry就会保存在链表上。获取值对象,当调用get方法,必然会找到bucket位置,然后遍历bucket位置的链表,用key.equals方法进行比较,就可以找到对应的Entry。

四问:超过负载因子怎么办?

四答:进行扩容,负载因子是0.75,需要进行rehash,容量会扩充为当前容量的2倍。

你可能感兴趣的:(一次真实的HashMap面试之问)