HashmMap 与 ConcurrentHashMap 的与区别

发现最近面试,面试官容易问的一个问题:HashMap  与 ConcurrentHashMap 的区别?今天就来说说这两者的区别,和应用场景。

HashMap

  HashMap 从数据结构上来讲,简单来讲HashMap是哈希表结构,它由【数组+链表+红黑树】组成,哈希表的主干是数组

  数组:采用一段连续的存储单元来存储数据,可通过下标查找元素,时间的复杂度是O(1);在插入删除操作,涉及到数组的元素位移。

  线性链表

    1、相邻元素之间通过指针链接,在程序执行过程中,链表的长度可以增加或减少;

    2、插入和删除元素时不需要移动其他元素,只需要改变指针,效率高;

    3、每个节点中不需要连续

    4、由于节点间是无需的,所以查找数据时效率低。

  红黑树:是一种自平衡二叉查找树,插入和删除元素操作时通过特定的操作保持二叉查找树的平衡,提高查找效率。

    1、每个节点都有红色或黑色

    2、树的根节点始终是黑色的

    3、没有两个相邻的红色节点

    4、节点到其任何一个后代null节点,每条路径的都具有相同数目

  结构图

    

ConcurrentHashMap 

  // 待更新。。。。。。

参考文档

  二叉树与红黑树 :https://www.jianshu.com/p/1286f9144475

猜你喜欢

转载自www.cnblogs.com/zhaiMaoDou/p/13387975.html
今日推荐