當前位置:編程學習大全網 - 編程軟體 - java 為什麽使用hashmap

java 為什麽使用hashmap

首先當我們需要存儲數據的時候,動態數組雖然能夠自動擴容,但是必須在初始時刻指定初始容量。而對於那些在編譯時無法確定具體的數量即動態增長的數據,就需要用到Java集合類了。對於ArrayList 和 LinkedList,還有 Vector它們都有壹些缺點,要麽插入刪除速度慢、要麽就是遍歷速度慢。那麽有沒有壹種插入、刪除、遍歷都比較不錯的集合類呢?於是 HashMap 就出現了。HashMap 是壹個散列表,它存儲的是壹組鍵值對(key-value)的集合,並實現快速的查找。

(1)為了實現快速查找,HashMap 選擇了數組而不是鏈表。以利用數組的索引實現 O(1) 復雜度的查找效率。

(2)為了利用索引查找,HashMap 引入 Hash 算法, 將 key 映射成數組下標: key -> Index。

(3)引入 Hash 算法又導致了 Hash 沖突。為了解決 Hash 沖突,HashMap 采用鏈地址法,在沖突位置轉為使用鏈表存儲。

(4)鏈表存儲過多的節點又導致了在鏈表上節點的查找性能的惡化。為了優化查找性能,HashMap 在鏈表長度超過 8 之後轉而將鏈表轉變成紅黑樹,以將 O(n) 復雜度的查找效率提升至 O(log n)。

綜上

HashMap 存在的意義就是實現壹種快速的查找並且插入、刪除性能都不錯的壹種 K/V(key/value)數據結構

附上壹位博主的高見:網頁鏈接

  • 上一篇:端口映射提問 用電信光貓(有超級用戶)橋接路由器後如何映射
  • 下一篇:題目如下: 用scanf輸入10個整數(采用int數據類型), 計算所有正數的和、負數的和以及10個數的和
  • copyright 2024編程學習大全網