亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間: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引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)。

(二)安全性不同

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

Map m = Collections.synchronizeMap(hashMap);

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

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

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

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

(五)哈希值的使用不同

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

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

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

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

相關(guān)文章

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

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

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

    使用MapStruct進(jìn)行Java Bean映射的方式

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

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

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

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

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

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

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

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

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

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

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

    Java正則表達(dá)式匹配字符串并提取中間值的方法實(shí)例

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

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

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

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

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

最新評(píng)論