C 中Hashtable和HashMap的區別

2021-12-30 00:33:42 字數 1063 閱讀 9306

hashtable的應用非常廣泛,hashmap是新框架中用來代替hashtable的類,也就是說建議使用hashmap,不要使用hashtable。可能你覺得hashtable很好用,為什麼不用呢?

這裡簡單分析他們的區別。

1.hashtable的方法是同步的,hashmap未經同步,所以在多執行緒場合要手動同步hashmap這個區別就像vector和arraylist一樣。

2.hashtable不允許null值(key和value都不可以),hashmap允許null值(key和value都可以)。

3.hashtable有乙個contains(object value),功能和containsvalue(object value)功能一樣。

4.hashtable使用enumeration,hashmap使用iterator。 以上只是表面的不同,它們的實現也有很大的不同。

5.hashtable中hash陣列預設大小是11,增加的方式是old*2+1。hashmap中hash陣列的預設大小是16,而且一定是2的指數。

6.雜湊值的使用不同,hashtable直接使用物件的hashcode,**是這樣的:

int hash = key.hashcode();

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

而hashmap重新計算hash值,而且用與代替求模:

int hash = hash(k);

int i = indexfor(hash, table.length);

static int hash(object x) //四,對雜湊表進行排序  /*對雜湊表進行排序在這裡的定義是對keyvalue鍵值對中的key按一定規則重新排列,但是實際上這個定義是不能實現的,因為我們無法直接在hashtable進行對key進行重新排列,如果需要hashtable提供某種規則的輸出,可以採用一種變通的做法:*/ arraylist akeys=new arraylist(ht.keys); file別忘了匯入system.collections akeys.sort(); file按字母順序進行排序for(string skey in akeys)

對C 中Hashtable和ArryList的理解

1 hashtabel 在.net framework中,hashtable是system.collections命名空間提供的集合物件,同時它也是乙個可變長的陣列,用於處理和表現類似key value的鍵值對,其中key通常可用來快速查詢,同時key是區分大小寫 value用於儲存對應於key的值...

C 中HashTable簡介和使用用法

一 簡介 名詞介紹 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。hashtable 表的優點 hashtable是...

C 中HashTable的用法

c 中hashtable的用法 一,雜湊表 hashtable 簡述 在.net framework中,hashtable是system.collections命名空間提供的乙個容器,用於處理和表現類似keyvalue的鍵值對,其中key通常可用來快速查詢,同時key是區分大小寫 value用於儲存...