HashMap和Hashtable的异同

120 阅读1分钟

简单总结~

- 相同点:

  1. 都是java.util包下的类。
  2. 都实现了Map接口,存储方式都是key-value形式。
  3. 都实现了Serializable和Cloneable接口。
  4. 负载因子都是0.75。
  5. 部分方法都相同,如put、remove等方法。

- 不同点:

  1. HashMap是非线程安全的;HashTable是线程安全的(相关方法被synchronized关键字修饰)。
  2. HashMap允许null作为键或值;HashTable不允许,运行时会报NullPointerException空指针异常。
  3. HashMap和HashTable底层结构是数组+链表(jdk1.7版本及之前),不过在jdk1.8版本之后,HashMap增加了一个新的结构叫做红黑树(链表元素长度超过8个,自动会转变成红黑树)。
  4. HashMap初始容量为16,HashTable初始容量为11.
  5. HashMap扩容是当前容量的翻倍,HashTable是当前容量的翻倍+1。
  6. HsahMap只支持Iterator遍历,Hashtable支持Iterator和Enumeration。
  7. HsahMap与Hashtable的部分方法不同,比如Hashtable有contains方法。