Hashtable底层实现原理是什么【面试题详解】

今天爱分享给大家带来Hashtable底层实现原理是什么【面试题详解】,希望能够帮助到大家。

概念:
HashTable类继承自Dictionary类, 实现了Map接口。 大部分的操作都是通过synchronized锁保护的,是线程安全的, key、value都不可以为null, 每次put方法不允许null值,如果发现是null,则直接抛出异常。
官方文档也说了:如果在非线程安全的情况下使用,建议使用HashMap替换,如果在线程安全的情况下使用,建议使用ConcurrentHashMap替换。

数据结构:
数组+链表。
1638

存取实现:
put():
限制了value不能为null。
由于直接使用key.hashcode(),而没有向hashmap一样先判断key是否为null,所以key为null时,调用key.hashcode()会出错,所以hashtable中key也不能为null。
Hashtable是在链表的头部添加元素的。
int index = (hash & 0x7FFFFFFF) %tab.length;获取index的方式与HashMap不同

扩容机制:
Hashtable默认capacity是11,默认负载因子是0.75.。当前表中的Entry数量,如果超过了阈值,就会扩容,即调用rehash方法,重新计算每个键值对的hashCode;
判断新的容量是否超过了上限,没超过就新建一个新数组,大小为原数组的2倍+1,将旧数的键值对重新hash添加到新数组中。

人已赞赏
Java

HashMap的底层实现原理是什么【面试题详解】

2020-11-9 10:26:43

Java

Java类初始化顺序是什么【面试题详解】

2020-11-9 10:42:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
'); })();