資料結構與演算法第六版 HashMap深入

2021-08-28 02:54:42 字數 1159 閱讀 1819

大部分的map都是依靠使用key的位址來定位到value,不過這只是熱身運動,我們在設定key的時候限制key是乙個integer的數字表示(儲存在list中),它的範圍在0和list.size-1中,並且list.size的個數要大於map中的entry個數,所以我們會計算 key在list中的位置,查詢這錶中的資料,

在我們的表述中,我們儲存key,value以及這個key在list中的下標,所以大部分的操作,get,put,remove 最壞的執行時間為o(1),

我們擴充套件這個map框架更加的通用,我們有兩個挑戰,

第一,我們不希望使用集合的長度,

第二,我們不希望key只能是integer,

這就是乙個新的概念 叫做 hash function這種方式指定key的位置,理想狀態下key會均衡的分布在list中,但是在測試中,可能會有很多不相同的key,擁有同樣的位址,因此,我們會指定乙個bucket array 見圖,

在list中每個位置可能會儲存多個entry,如果他們在hash function 之後index相同,

hash functions

hashfunctions 會定位map中的每乙個key,在list中的位置,然後我們會儲存這個entry在list中,好比說

map.put("a",12); 我們會根據a的hash functions 找到這個entry在list中的位置

如果兩個或者更多的key擁有相同的hash code,但是他們是不同的entry,他們會定位到相同的index中,這種情況我們叫」碰撞「

乙個好的hash function會減少碰撞的可能性,

通常來講,我們計算hashcode的,通常分為兩個步驟,乙個是 hash functiuon 第二步則是,compression function(解壓操作),map中的hashcode在集合中的範圍是(0,size-1)

Windows Internals 第六版 譯文2

recoveryenabled boolean 如果有的話允許修復序列。在全新安裝windows時使用以提供基於windows pe的啟動和修復介面 relocatephysical physical address 為特定的實體地址重定位乙個自動選擇的numa節點的物理記憶體 targetname...

批量重新命名 第六版

a,directoryinfo 類 公開用於建立 移動和列舉目錄和子目錄的例項方法。無法繼承此類。將 directoryinfo 類用於典型操作,如複製 移動 重新命名 建立和刪除目錄。如果打算多次重用某個物件,可考慮使用 directoryinfo 的例項方法,而不是 directory 類的相應...

第六章 專案進度管理第六版

本章重點 進度管理的方法 緊前關係繪圖法的邏輯關係和依賴關係 估算活動持續時間的工具 關鍵路徑法,關鍵鏈,進度壓縮的方法等重點工具的使用 有效控制進度,在規定時間內完成工作 1.時間管理主要包括哪些過程?規劃進度管理,定義活動,排列活動順序,估算活動持續時間,制定進度計畫,控制進度。2.什麼是活動定...