本文引用自霍格沃兹测试开发学社录播课
Java经典面试题-HashMap、HashTable 区别
霍格沃兹测试开发
http://ceshiren.com
面试相关问题
- Hashtable、HashMap、TreeMap 有什么不同?
- Hashtable、HashMap的区别?
共同点
- 最常见的
Map
实现 - 以==键值对==的形式存储和操作数据的容器类型
不同点-元素特性
- Hashtable
- ==不支持 null 键和值==
-
HashMap
- ==支持 null 键和值==
-
TreeMap
- 红黑树
不同点-顺序特性
-
HashTable
、HashMap
无序 -
TreeMap
默认升序排序
不同点-初始化与增长方式
-
HashTable
不指定容量,默认容量为11- 容量不一定为2的整数次幂
- 扩容: 2n+1
-
HashMap
不指定容量,默认容量为16- 容量一定为2的整数次幂
- 扩容: 2n
不同点-线程安全性
-
HashTable
线程安全 -
HashMap
不支持线程的同步
HashMap底层设计实现
- put方法
总结
面试官可能会问:HashMap 和 HashTable 的区别是什么?
- 都是 Map集合的实现类,以键值对的形式存储和操作数据;
- HashTable是线程同步的,不支持键值为null,由于线程同步导致性能开销比较大;
- HashMap是不同步的,支持键值为null,行为上和HashTable大概一致,可支持多线程,对应效率高;
- HashTable初始容量为11,HashMap初始容量是16。: