哈希表也稱為散列表,是根據關鍵字值(key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵字值映射到一個位置來訪問記錄,以加快查找的速度。這個映射函數稱為哈希函數(也稱為散列函數),映射過程稱為哈希化,存放記錄的數組叫做散列表。比如我們可以用下面的方法將關鍵字映射成數組的下標:arrayIndex = hugeNumber % arraySize。
哈希化之後難免會產生一個問題,那就是對不同的關鍵字,可能得到同一個散列地址,即同一個數組下標,這種現象稱為沖突,那麼我們該如何去處理沖突呢?一種方法是開放地址法,即通過系統的方法找到數組的另一個空位,把數據填入,而不再用哈希函數得到的數組下標,因為該位置已經有數據了;另一種方法是創建一個存放鏈表的數組,數組內不直接存儲數據,這樣當發生沖突時,新的數據項直接接到這個數組下標所指的鏈表中,這種方法叫做鏈地址法。下面針對這兩種方法進行討論。