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都不能满足自己的需求时,还可以考虑新定义一个类,继承或重新实现散列表;当然,一般情况下是不需要的了。