Hashtable和HashMap的區別

2022-09-22 22:30:20 字數 1260 閱讀 9644

1、兩者繼承的直接父類不同:hashtable繼承自dictiionary,hashmap繼承自abstractmap,這一區別可以通過兩者的原始碼明顯地看到:

public class hashmap

extends abstractmap

implements map, cloneable, serializable

public class hashtable

extends dictionary

implements map, cloneable, j**a.io.serializable2、

hashtable的put方法如下:

public synchronized v put(k key, v value)

// makes sure the key is not already in the hashtable.

entry tab = table;

int hash = key.hashcode();

int index = (hash & 0x7fffffff) % tab.length;

for (entry e = tab[index]; e != null; e = e.next)

} modcount++;

if (count >= threshold)

// creates the new entry.

entry e = tab[index];

tab[index] = new entry(hash, key, value, e);

count++;

return null;

}hashmap的put方法如下:

public v put(k key, v value)

} modcount++;

addentry(hash, key, value, i);

return null;

}通過比對hashtable與hashmap的put方法,我們很容易得出這樣的結論:

a、hashtable的put方法是同步的,執行緒安全的;hashmap的put方法不是同步的,非執行緒安全的:由此可見在多執行緒情況下應該使用hashtable中的put方法,反之應該使用hashmap中的put方法;由此也可以得出這樣的結論hashtable的put方法效率低於hashmap的put方法;

b、在向hashtable中put資料時,key與value均不能為null,而在向hashmap中put資料時,key與value都可以為空;

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...