散列表(hashmap)和雜湊表(hashtable)的區別

Java集合框架提供了一組集合類。每個班級都有自己的表現優勢和劣勢。有些類提供了可以按原樣使用的完整實現。另一些是抽象的,提供了作為建立集合起點的框架實現。集合實現使用synchronized wrapper框架來提供同步的類,否則實現是不同步的。有幾個類提供map介面的實現。...

Java集合框架提供了一組集合類。每個班級都有自己的表現優勢和劣勢。有些類提供了可以按原樣使用的完整實現。另一些是抽象的,提供了作為建立集合起點的框架實現。集合實現使用synchronized wrapper框架來提供同步的類,否則實現是不同步的。有幾個類提供map介面的實現。

Java平臺包含三個通用的Map實現:HashMap、TreeMap和LinkedHashMap。HashMap和Hashtable是Java中用於在雜湊表中儲存鍵/值對的兩個集合。Hashtable是一個同步對映,HashMap是一個非同步對映。不過,如果需要使用同步對映,雜湊表比在同步包裝器中使用雜湊對映要快。在Java中,這兩個集合都是基於雜湊的集合,但它們有相當大的差異。我們強調兩者之間的一些關鍵區別,以幫助您更好地理解術語。

 

散列表(hashmap)和雜湊表(hashtable)的區別

什麼是散列表(hashmap)?

HashMap是一個基於雜湊表的Map實現,它為**和定位對提供了恆定的時間效能。HashMap類提供了一個基於雜湊表資料結構的對映實現。此實現支援所有對映操作,並允許多個空值,但只允許一個空鍵。它使用鍵/值對將值儲存在雜湊表中。它是一個不同步的對映,這意味著它不是執行緒安全的,如果沒有正確的同步,就不能在多個執行緒之間共享。

什麼是雜湊表(hashtable)?

與HashMap不同,Hashtable是一個同步對映,它是執行緒安全的,這意味著它可以在多個執行緒之間共享。在Hashtable中,指定一個可以用作鍵的物件以及與該鍵一起使用的值。雜湊表透過雜湊函式將鍵對映到值。Java以物件的hashcode()方法的形式提供這個函式,類重寫該方法以提供適當的hash程式碼。與HashMap不同,Hashtable不支援null值和null鍵,因為Hashtable的put方法實現中存在null檢查。

散列表(hashmap)和雜湊表(hashtable)的區別

 

hashmap和hashtable的區別

  1. HashMap與Hashtable的基礎知識

兩者都是Java中基於雜湊的集合,用於將資料儲存在鍵/值對中。HashMap是一個基於雜湊表的Map實現,它為**和定位對提供了恆定的時間效能。可以使用建構函式來調整效能,這些建構函式允許您設定雜湊表的容量和負載因子。基本雜湊表與HashMap非常相似,甚至包括方法名。它將金鑰/值對儲存在雜湊表中。在Hashtable中,指定一個可以用作鍵的物件以及與該鍵一起使用的值。

  1. HashMap與Hashtable的同步

HashMap和Hashtable都使用雜湊技術來儲存基於鍵的值。與HashMap一樣,Hashtable使用鍵/值對在雜湊表中儲存值。然而,兩者之間的關鍵區別是同步。HashMap是一個非同步對映,而Hashtable是一個同步對映。這意味著HashMap不是執行緒安全的,如果沒有正確的同步程式碼,就不能在多個執行緒之間共享。相反,雜湊表是執行緒安全的,可以在多個執行緒之間共享。如果需要使用同步對映,Hashtable比在同步包裝器中使用HashMap快。

  1. HashMap與Hashtable的空鍵和空值

HashMap類提供了一個基於雜湊表資料結構的對映實現。此實現支援所有對映操作,並允許多個null值,但只允許一個null鍵,這樣就可以維護唯一的鍵屬性。但是,它不保證條目的儲存順序。另一方面,雜湊表透過雜湊函式將鍵對映到值。與HashMap不同,Hashtable不支援null值和null鍵,因為Hashtable的put方法實現中存在null檢查。

  1. HashMap與Hashtable的效能比較

因為HashMap不是一個同步對映,所以它在效能方面比Hashtable快得多,而且實際上比Hashtable使用更少的記憶體。雖然它們實際上是相同的,但Hashtable比HashMap慢一點,但比同步HashMap快一點。本質上,將雜湊表與多執行緒訪問結合使用是不安全的,因為只有方法是同步的。Hashtable是HashMap的同步對應項。與同步物件相比,非同步物件的效能更好,就像雜湊表在單執行緒環境中的效能更好一樣。

hashmap與hashtable:比較圖

 散列表(hashmap)和雜湊表(hashtable)的區別

 

總結 - hashmap的(of hashmap) vs. 雜湊表(hashtable)

HashMap類提供了一個未排序、無序的對映。因此,當您需要一個對映並且不關心條目的儲存順序時,HashMap就是一個不錯的選擇。

Hashtable和Vector一樣,從史前的Java時代就已經出現了。就像Vector是更現代、更高階的ArrayList的同步對應物一樣,Hashtable也是HashMap的同步對應物。但是,類不能同步,所以當我們說Hashtable是一個同步對映時,意味著類的關鍵方法是同步的。

雖然兩者實際上是相同的,但不同之處在於它們的同步方式和執行方式。HashMap在多執行緒環境中效能更好,而Hashtable在單執行緒環境中效能更好。

  • 發表於 2021-06-25 20:14
  • 閱讀 ( 43 )
  • 分類:網際網路

你可能感興趣的文章

散列表(hashmap)和樹狀圖(treemap)的區別

關鍵區別–hashmap與treemap 在程式設計中,有各種機制來收集資料。集合是儲存資料的一種方法。程式語言,如Java使用集合。它是一個包含類和介面的框架,用於儲存和操作一組資料元素。在普通陣列中,有固定數量的元素要...

  • 發佈於 2020-10-02 05:06
  • 閲讀 ( 39 )

等於(equals)和java中的hashcode(hashcode in java)的區別

...等。列印s1和s2的hashCode得到相同的值。hashCode方法可用於HashMap等集合。 等於(equals)和java中的hashcode(hashcode in java)的區別 等於Java中的hashCode equals是Java中的一個方法,它的作用類似於==運算子,後者用於測試物件標識而...

  • 發佈於 2020-10-19 00:40
  • 閲讀 ( 52 )

記憶體快取(memcached)和雷迪斯(redis)的區別

...等,它使用資料結構來儲存資料。主要資料結構有字串、列表、集合、排序集和雜湊、點陣圖等,Redis是用C語言編寫的,是一個開源的跨平臺系統。 圖01:Redis Redis的主要優點是它將資料儲存在記憶體中。這使得Redis速度很快。...

  • 發佈於 2020-10-19 23:25
  • 閲讀 ( 44 )

通用(generic)和c中的非泛型集合#(non-generic collection in c#)的區別

...小。 一些非泛型集合類是ArrayList、SortedList、Stack、Queue和HashTable。每個集合類實現IEnumerable介面。它有助於使用foreach迴圈遍歷集合中項的元素。 ArrayList是陣列的一種替代方法。如果有一個數組可以儲存10個元素,它就不能儲存20...

  • 發佈於 2020-10-24 01:08
  • 閲讀 ( 51 )

隱私(privacy)和安全(security)的區別

...止此類攻擊。因此,安全性意味著使用各種技術(如加密和雜湊函式)來提供這三種服務的機密性、完整性和可用性。 什麼是隱私(privacy)? 隱私是保密的一個類似術語。在這裡,只有有意或被授權的一方可以分享祕密,而未經...

  • 發佈於 2020-10-25 16:20
  • 閲讀 ( 46 )

厭倦了skype?7個最佳免費skype備選方案

... 與此列表中的其他一些應用程式相比,Jami也是獨一無二的。它不依賴集中式伺服器進行通訊,而是使用分散式雜湊表(DHT)。 ...

  • 發佈於 2021-03-18 11:47
  • 閲讀 ( 46 )

4個簡單的資訊雜湊torrent磁鐵轉換器

...以使用資訊雜湊繞過集中的torrent跟蹤器,透過分散式散列表(DHT)直接與對等方通訊。 ...

  • 發佈於 2021-03-19 07:52
  • 閲讀 ( 48 )

6個免費的雜湊檢查程式來檢查任何檔案的完整性

...湊生成。您可以載入HashMyFiles,其中包含需要雜湊的檔案列表,將其設定為有效,並接收整個列表的雜湊。 ...

  • 發佈於 2021-03-19 07:54
  • 閲讀 ( 43 )

redis和php快速資料儲存入門

... Redis中的列表是具有特定順序的一維陣列,允許列表中不同位置的重複項。可以使用lpush和rpush命令將項新增到列表的左側或右側。 ...

  • 發佈於 2021-03-28 11:57
  • 閲讀 ( 39 )

為什麼公司仍然用純文字儲存密碼?

...其儲存為.txt檔案。為了安全起見,應該對密碼進行加密和雜湊,那麼為什麼2019年不會發生這種情況呢? 為什麼密碼不能以純文字形式儲存 designer491/Shutterstock 當一家公司以明文形式儲存密碼時,任何擁有密碼資料庫或密碼儲存...

  • 發佈於 2021-04-03 07:31
  • 閲讀 ( 45 )
保護環境發
保護環境發

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦