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

HashMap和Hashtable的詳細比較

 更新時間:2017年04月30日 10:42:10   作者:仰望天空  
這篇文章主要介紹了HashMap和Hashtable的詳細比較的相關資料,需要的朋友可以參考下

HashMap和Hashtable的詳細比較

前言:

可以直接根據(jù)hashcode值判斷兩個對象是否相等嗎?肯定是不可以的,因為不同的對象可能會生成相同的hashcode值。雖然不能根據(jù)hashcode值判斷兩個對象是否相等,但是可以直接根據(jù)hashcode值判斷兩個對象不等,如果兩個對象的hashcode值不等,則必定是兩個不同的對象。如果要判斷兩個對象是否真正相等,必須通過equals方法。

也就是說對于兩個對象,如果調(diào)用equals方法得到的結果為true,則兩個對象的hashcode值必定相等;如果equals方法得到的結果為false,則兩個對象的hashcode值不一定不同;如果兩個對象的hashcode值不等,則equals方法得到的結果必定為false;如果兩個對象的hashcode值相等,則equals方法得到的結果未知。

HashMap和Hashtable不保證map的順序,也不保證順序不會隨著時間不變。

HashMap實例有兩個參數(shù)影響性能:初始capacity和load factor。capacity是hashtable中桶的數(shù)量,初始capacity就是hashtable創(chuàng)建時的capacity。load factor影響hashtable多滿時允許自動增加capacity。當hashtable中entry的數(shù)量超過load factor和當前capacity的乘積,hashtable會重新哈希(意味著,內(nèi)部數(shù)據(jù)結構重建)因此hashtable大約擁有桶數(shù)量的兩倍。

作為通用規(guī)則,默認load factor(0.75)在時間和空間消耗上提供了好的權衡。值越大,空間開銷越小,但是遍歷成本增加(表現(xiàn)在大多數(shù)操作,包括get和put)。當設置初始capacity時,為了最小化重新hash的操作次數(shù),應該考慮map的entry數(shù)量和load factor。如果初始容量大于最大entry數(shù)量除以load factor,重新hash操作將不會發(fā)生。然而,設置初始capacity太大會浪費空間。

如果許多mapping存儲在HashMap實例中,創(chuàng)建時使用足夠大的capacity將允許mapping存儲得更有效率,因為不會隨著table的數(shù)量增大重新hash。注意使用許多相同hashCode()的key肯定會降低任意hashtable的性能。

二.相同點

DEFAULT_LOAD_FACTOR

0.75

TREEIFY_THRESHOLD

8

UNTREEIFY_THRESHOLD

6

MIN_TREEIFY_CAPACITY

否則resize()

64

size

mapping數(shù)量

threhold

capacity*load factor

三.不同點


HashMap

Hashtable

線程安全

不安全

安全

允許null的鍵和值

允許

不允許

實現(xiàn)和繼承

實現(xiàn)Map

實現(xiàn)Map,繼承Dictionary

遍歷方式

Iterator

Iterator和Enumeration

計算哈希值

(key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16)

(key.hashCode() & 0x7FFFFFFF)

計算數(shù)組下標

(length - 1) & hash

hash % length

DEFAULT_INITIAL_CAPACITY

16

11

容量增加方式

old*2

長度始終為2的冪

old*2+1

構造函數(shù)

threshold=tableSizeFor(initialCapacity)

threhold=initialCapacity*load factor

resize

從0-cap

鏈表順序不變

從cap-0

鏈表順序相反

 計算數(shù)組下標:當length總是2的n次方時,h&(length-1)運算等價于對length取模,也就是h%length,但是&比%具有更高的效率。

容量增加方式:當數(shù)組長度為2的n次冪的時候,不同的key算得的index相同的幾率較小,那么數(shù)據(jù)在數(shù)組上分布就比較均勻,也就是說碰撞的幾率小。相對的,查詢的時候就不用遍歷某個位置上的鏈表,這樣查詢效率也就較高了。導致resize()不同HashMap直接使用之前的數(shù)組下表,而Hashtable需要重新計算。

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

相關文章

  • Java實現(xiàn)多項式除法的代碼示例

    Java實現(xiàn)多項式除法的代碼示例

    今天小編就為大家分享一篇關于Java實現(xiàn)多項式除法的代碼示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Spring boot + mybatis + Vue.js + ElementUI 實現(xiàn)數(shù)據(jù)的增刪改查實例代碼(一)

    Spring boot + mybatis + Vue.js + ElementUI 實現(xiàn)數(shù)據(jù)的增刪改查實例代碼(一)

    這篇文章主要介紹了Spring boot + mybatis + Vue.js + ElementUI 實現(xiàn)數(shù)據(jù)的增刪改查實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • Java?IO篇之Reactor?網(wǎng)絡模型的概念

    Java?IO篇之Reactor?網(wǎng)絡模型的概念

    Reactor?模式也叫做反應器設計模式,是一種為處理服務請求并發(fā)提交到一個或者多個服務處理器的事件設計模式,Reactor?模式主要由?Reactor?和處理器?Handler?這兩個核心部分組成,本文給大家介紹Java?IO篇之Reactor?網(wǎng)絡模型的概念,感興趣的朋友一起看看吧
    2022-01-01
  • Java對象轉換的方案分享

    Java對象轉換的方案分享

    這篇文章主要介紹了Java對象轉換的方案分享,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-09-09
  • mvn中dependencyManagement的使用詳解

    mvn中dependencyManagement的使用詳解

    這篇文章主要介紹了mvn中dependencyManagement的使用,子項目中只是聲明使用此依賴即可,可不用指定版本(將使用父pom同一指定的版本),若指定了版本,將以子項目的版本號為主,需要的朋友可以參考下
    2022-08-08
  • 簡單介紹區(qū)分applet和application的方法

    簡單介紹區(qū)分applet和application的方法

    applet和application都是Java語言編寫出來的應用程序,本文簡單介紹了二者的不同之處,需要的朋友可以參考下
    2017-09-09
  • Mybatis實現(xiàn)Mapper動態(tài)代理方式詳解

    Mybatis實現(xiàn)Mapper動態(tài)代理方式詳解

    這篇文章主要為大家詳細介紹了Mybatis實現(xiàn)Mapper動態(tài)代理方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 解析SpringBoot @EnableAutoConfiguration的使用

    解析SpringBoot @EnableAutoConfiguration的使用

    這篇文章主要介紹了解析SpringBoot @EnableAutoConfiguration的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • Java的三種代理模式簡述

    Java的三種代理模式簡述

    這篇文章主要簡述Java的三種代理模式,java的代理模式主要包括靜態(tài)代理、動態(tài)代理、Cglib代理,感興趣的小伙伴可以參考下面文章的具體內(nèi)容
    2021-09-09
  • Java中的泛型和泛型通配符詳解

    Java中的泛型和泛型通配符詳解

    這篇文章主要介紹了Java中的泛型和泛型通配符詳解,泛型的作用就是在編譯的時候能夠檢查類型安全,并且所有的強制轉換都是自動和隱式的在沒有泛型的情況的下,通過對類型Object的引用來實現(xiàn)參數(shù)的“任意化”,需要的朋友可以參考下
    2023-07-07

最新評論