Hashtable与HashMap的区别

(1)问题分析

考官主要考核对于两个map的区别。

(2)核心答案讲解:

相同点:

HashMap和Hashtable都是存储“键值对(key-value)”的散列表,而且都是采用 拉链法实现的。

存储的思想都是:通过table数组存储,数组的每一个元素都是一个Entry;而 一个 Entry就是一个单向链表,Entry链表中的每一个节点就保存了key- value键值对数据。

不同点:

1) 继承和实现方式不同

2)线程安全不同

3)对null值的处理不同

4) 支持的遍历种类不同

5) 通过Iterator迭代器遍历时,遍历的顺序不同

6)容量的初始值 和 增加方式都不一样

7) 添加key-value时的hash值算法不同

(3)问题扩展

HashTable中hash数组默认大小是11,增加的方式是 old*2+1;HashMap中 hash数组的默认大小是16,而且一定是2的指数;

扩容的临界点是加载因子loadFactor>0.75,其中loadFactor=size/capaticy

(4)使用场景

在多线程中,我们可以自己对HashMap进行同步,也可以选择ConcurrentHashMap。当HashMap和Hashtable都不能满足自己的需求时,还可以考虑新定义一个类,继承或重新实现散列表;当然,一般情况下是不需要的了。

点击此处
隐藏目录