Java 中 Hashtable 與 HashMap 的異同

在java中,咱們能夠知道,Hashtable 與 HashMap 是兩個基於散列的集合,用存儲對象做爲鍵值對。在平常的開發中咱們常常使用到。看似基本功能都十分的類似,但做爲開發者,咱們應該瞭解關於 Hashtable 與 HashMap 的差別。不然會在一些不一樣的場景中出現問題。在看他們差別以前,咱們先了解一下他們的共同點吧。 java

共同點

  • 1.HashMap 與 Hashtable 都是繼承於 java.util.Map 接口;
  • 2.HashMap 與 Hashtable 都是基於 hash 的集合以及 hash 的工做原理;
  • 3.HashMap 與 Hashtable 提供高性能的 get 和 set 方法,存取對象;
  • 4.在 Jdk 4 之後 Hashtable 與 HashMap 都屬於 java 的集合框架。

差別

  • 1.第一個差別就應該是 HashMap 是線程不安全的; Hashtable 是線程安全的;
  • 2.第二個重要差別是性能,應爲 HashMap 不是同步的,因此要比 Hashtable 性能更好;
  • 3.HashTable 不容許 null 值(key和value都不能夠),HashMap 容許 null 值(key和value均可以);
  • 4.HashTable 使用Enumeration,HashMap 使用Iterator;
  • 5.HashTable 中 hash 數組默認大小是11,增長的方式是 old*2+1。HashMap 中 hash 數組的默認大小是16,並且必定是2的指數
  • 6.哈希值的使用不一樣,HashTable 直接使用對象的 hashCode 而HashMap從新計算hash值,並且用與代替求模
相關文章
相關標籤/搜索