首页 > 其他分享 >HashMap和HashTable的区别,其底层原理

HashMap和HashTable的区别,其底层原理

时间:2023-01-27 19:22:09浏览次数:45  
标签:HashMap 链表 HashTable 数组 CurrnetHashMap null 底层

区别:

  1. HashMap中允许存在null的键和值,但HashTable不允许
  2. HashTable中每个方法都有synchronized修饰,所以HashTable是线程安全的,而HashMap不是。但多线程情况下仍然不建议使用HashTable,而是使用CurrnetHashMap,因为HashTable效率低,CurrnetHashMap是采用分段锁的,效率比HashTable高。

实现原理:数组+链表实现
Map中维护的是Entry数组。Map刚声明时为null,对其进行put时才初始化数组大小,默认为16。
当put新元素时,根据key计算出对应的hash值然后二次hash算出对应数组下标。数组的每个元素是一个链表的头指针,用来存储具有相同下标的Entry。
key为null,存在下标为0的位置。
jkd8开始,链表高度达到8,数组长度超过64链表转为红黑树,元素以内部类Node节点存在。

标签:HashMap,链表,HashTable,数组,CurrnetHashMap,null,底层
From: https://www.cnblogs.com/ccx-lly/p/17069178.html

相关文章