欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java  HashMap和HashTable的區(qū)別詳解

 更新時間:2016年12月24日 09:35:25   投稿:lqh  
這篇文章主要介紹了java HashMap和HashTable的區(qū)別詳解的相關(guān)資料,需要的朋友可以參考下

  HashMap和HashTable,這二者的區(qū)別經(jīng)常被別人問起,今天在此總結(jié)一下。

(一)繼承的歷史不同

public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map

    Hashtable是繼承自Dictionary類的,而HashMap則是Java 1.2引進的Map接口的一個實現(xiàn)。

(二)安全性不同

    HashMap是非synchronized,而HashTable在默認的情況下是synchronized,這意味著HashTable是線程安全的,多個線程可以共享一個HashTable;而如果沒有正確的同步的話,多個線程是不能共享HashMap的。Java 5以后提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的擴展性更好。當(dāng)然,我們可以通過以下方法讓HashMap同步:

Map m = Collections.synchronizeMap(hashMap);

(三)是否可為空值的異同

    HashMap可以讓你將空值作為一個表條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數(shù)量的條目可以是空的value。這就是說,如果在表中沒有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個空的值,那么get()將返回null;而HashTable則不行,key和value都不允許出現(xiàn)null值。

(四)二者的遍歷方式的內(nèi)部實現(xiàn)上不同

    Hashtable、HashMap都使用了 Iterator迭代器,HashMap的迭代器(Iterator)是fail-fast迭代器,而HashTable的enumerator迭代器不是fail-fast的。而由于歷史原因,Hashtable還使用了Enumeration的方式 。

(五)哈希值的使用不同

    HashTable直接使用對象的hashCode,而HashMap則需要重新計算hash值。

(六)二者內(nèi)部實現(xiàn)方式的數(shù)組的初始大小和擴容的方式不同

    HashTable中hash數(shù)組默認大小是11,增加的方式是 old*2+1;HashMap中hash數(shù)組的默認大小是16,而且一定是2的指數(shù)。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • 淺析Java中線程的創(chuàng)建和啟動

    淺析Java中線程的創(chuàng)建和啟動

    這篇文章運用實例代碼介紹了Java中線程的創(chuàng)建和啟動,非常詳細,有需要的朋友們可以參考借鑒,下面一起來看看。
    2016-08-08
  • 使用MapStruct進行Java Bean映射的方式

    使用MapStruct進行Java Bean映射的方式

    MapStruct是一個用于JavaBean映射的注解處理器,它通過注解生成類型安全且性能優(yōu)異的映射代碼,避免手動編寫重復(fù)的樣板代碼,主要特性包括類型安全、高性能、簡潔和可定制性,使用步驟包括定義映射接口、創(chuàng)建源類和目標(biāo)類、生成映射代碼并調(diào)用映射方法
    2025-02-02
  • Java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)二維數(shù)組與稀疏數(shù)組轉(zhuǎn)換詳解

    Java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)二維數(shù)組與稀疏數(shù)組轉(zhuǎn)換詳解

    稀疏數(shù)組是用于優(yōu)化,壓縮具有以下特點的二維數(shù)組:當(dāng)二維數(shù)組中的元素大部分相同,有意義的數(shù)據(jù)元素較少時,可以使用稀疏數(shù)組進行簡化,節(jié)省存儲空間
    2021-10-10
  • SpringBoot敏感數(shù)據(jù)脫敏的處理方式

    SpringBoot敏感數(shù)據(jù)脫敏的處理方式

    在Spring Boot中處理敏感數(shù)據(jù)脫敏,可以通過以下幾種方式實現(xiàn),確保敏感信息在接口返回、日志輸出、數(shù)據(jù)庫存儲等環(huán)節(jié)得到保護,文中通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2025-03-03
  • Spring Security如何基于Authentication獲取用戶信息

    Spring Security如何基于Authentication獲取用戶信息

    這篇文章主要介紹了Spring Security如何基于Authentication獲取用戶信息,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • 圖解Java排序算法之3種簡單排序

    圖解Java排序算法之3種簡單排序

    這篇文章主要為大家詳細介紹了Java排序算法之3種簡單排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • java實現(xiàn)郵件發(fā)送詳解

    java實現(xiàn)郵件發(fā)送詳解

    這篇文章主要為大家詳細介紹了java實現(xiàn)郵件發(fā)送示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Java正則表達式匹配字符串并提取中間值的方法實例

    Java正則表達式匹配字符串并提取中間值的方法實例

    正則表達式常用于字符串處理、表單驗證等場合,實用高效,下面這篇文章主要給大家介紹了關(guān)于Java正則表達式匹配字符串并提取中間值的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 多線程下怎樣保證OkHttpClient的線程安全

    多線程下怎樣保證OkHttpClient的線程安全

    這篇文章主要介紹了多線程下怎樣保證OkHttpClient的線程安全問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 解決一個JSON反序列化問題的辦法(空字符串變?yōu)榭占?

    解決一個JSON反序列化問題的辦法(空字符串變?yōu)榭占?

    在平時的業(yè)務(wù)開發(fā)中,經(jīng)常會有拿到一串序列化后的字符串要來反序列化,下面這篇文章主要給大家介紹了如何解決一個JSON反序列化問題的相關(guān)資料,空字符串變?yōu)榭占?需要的朋友可以參考下
    2024-03-03

最新評論