一问:什么是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倍。