一次真实的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倍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容