美文网首页
HashMap深度分析

HashMap深度分析

作者: Ben_197e | 来源:发表于2020-09-21 17:31 被阅读0次

    本文将针对HashMap一下几方面进行深度分析,希望对读者能够有所帮助:

    1)HashMap为什么是线程不安全的?

    2)HashMap和HashTable的区别

    3)1.7和1.8的HashMap实现区别总结

    HashMap

    1. 允许使用null健和null值,null存储在第一个位置;hashMap的key不能重复;无序;非线程安全;初始容量16,扩容*2;

    2. HashTable:不允许null;线程安全;相比HashMap速度慢;适用多线程;初始容量11;

    3. 存储结构:

    java 1.7: 数组+单链表;头插法(逆序且环形链表死循环问题);

    java1.8:数组+单链表+红黑树(当链表节点>8,转成红黑树);尾插法;

    4. 线程不安全:

          1. put数据导致多线程数据不一致,两个数据计算得到一样的hash坐标,两个线程同时插入会出现数据不一致。

           2. 扩容会产生死循环,两个线程同时修改一个链表结构,导致产生循环链表。

    相关文章

      网友评论

          本文标题:HashMap深度分析

          本文链接:https://www.haomeiwen.com/subject/srzvyktx.html