目录
1、jdk1.8之前HashMap的底层结构和存在的问题
2、jdk1.8对HashMap做了哪些优化
3. HashMap的扩容机制
4. HashMap的hash算法、寻址算法优化问题
5. HashMap如何解决hash碰撞?
6. 工作中你怎么使用HashMap
大家好,我是四九城最豪横的小耳朵。
今天咱们来用大白话聊聊HashMap面试相关的知识点。
1、jdk1.8之前HashMap的底层结构和存在的问题
底层结构:jdk1.8之前HashMap的底层结构使用的就是数组加链表,它数据节点是一个Entry节点,Entry就是hashmap的一个内部类;
存在的问题:jdk1.8之前HashMap的数据插入的过程是头插法。它使用头插法会造成什么问题呢?它的resize方法里面调用了一个transfer方法,对Entry进行了一个rehash,在这个过程中,可能会造成链表的一个循环,就可能在下一次get的时候出现一个死循环的情况;也有可能就是因为它没有加锁,所以他也有可能在多个线程并发的情况,不能保证数据安全。