HashTable和HashMap的區別

2021-10-22 11:54:28 字數 732 閱讀 1054

1、繼承:

hashtable繼承自dirctionary,hashmap繼承自abstractmap,二者均實現了map介面;

2、執行緒安全性:

hashtable的方法是同步的,即是執行緒安全的。haspmap的方法不是同步的,不是執行緒安全的的。在多執行緒併發的情況下,我們可以直接使用hashtable,如果 要使用hashmap,就需要自行對hashmap的同步處理。

3、鍵值:

hashtable中不允許有null鍵和null值,hashmap中允許出現乙個null鍵,可以存在乙個或者多個鍵的值都為null。程式中,對於hashmap,如果使用get(引數為 鍵)方法時,返回結果為null,可能是該鍵不存在,也可能是該鍵對應的值為null,這就出現了結果的二義性。因此,在hashmap中,我們不能使用get()方法來查詢鍵 對應的值,應該使用containskey()方法。

4、遍歷:

這兩個在遍歷方式的實現不同。hashtable和hashmap兩者都實現了iterator。但是,由於歷史原因,hashtable還使用了enumeration。

5、雜湊值:

hashtable是直接使用物件的hashcode。hashmap是重新計算hash值。

6、擴容:

hashtable和hashmap的底層實現的陣列和初始大小和擴容方式。hashtable初始大小為11,並且每次擴容都為:2old+1。hashmap的預設大小為16,並且一 定是2的指數,每次擴容都為old2。

Java中HashTable和HashMap的區別

1 hashtable的方法是同步的,hashmap不同步,所以在多執行緒情況下,使用的是hashtable 2 hashtable不允許null值 key和value都不可以 hashmap允許null值 key和value都可以 3 hashtable有乙個contains 方法,功能和cont...

資料結構之HashTable與HashMap

首先介紹一下hashtable 與hashmap hashtable類實現乙個雜湊表,該雜湊表將鍵對映到相應的值。任何非 null 物件都可以用作鍵或值。hashmap是基於雜湊表的map 介面的實現。此實現提供所有可選的對映操作,並允許使用 null 值和 null 鍵。hashmap不保證對映的...

Hashtable和Dictionary效能比較

在.net1.1裡經常會使用到hashtable,到裡.net 2.0以後我發現有了乙個很好用的idictionary實現類dictionary。但還是會擔心dictionary的檢索效率是否跟hashtable相當,據我了解arraylist的檢索效率是非常差的,binarysearch也不如ha...