關聯數組,也稱為哈希表或哈希映射,與標準數組類似,只是數組的索引可以是字符串而不是整數。在許多數據庫應用程序和其他處理大量數據的程序中,關聯數組是幫助高效地排序和訪問信息的重要元素在關聯數組的核心是一個標準數...
關聯數組,也稱為哈希表或哈希映射,與標準數組類似,只是數組的索引可以是字符串而不是整數。在許多數據庫應用程序和其他處理大量數據的程序中,關聯數組是幫助高效地排序和訪問信息的重要元素在關聯數組的核心是一個標準數組,它是用整數索引的,通常是這樣。一種稱為哈希函數的特殊算法將字符串索引轉換為整數索引來查找值。這是一種一致的轉換,因此,實際的整數索引不需要存儲,而是根據每次需要從字符串中計算出來。一種稱為哈希函數的特殊算法將字符串索引轉換為整數索引以查找值。引用關聯數組時使用的術語可能與會話時使用的術語略有不同關于普通數組。通常稱為索引(數組中元素的數值位置)稱為鍵。與鍵關聯的數據稱為值。這意味著,在關聯數組中,鍵與值相關聯,它與引用數據結構中標準數組中某個元素的索引相關。每個關聯數組的核心是哈希函數。這是一種用于根據鍵確定值的數值索引的算法。有幾種類型的哈希函數,其中一些用于對整數和一些設計用于處理字符串的鍵。在整數鍵的情況下,一個流行的方法是將鍵值除以數組的大小,然后使用除法的余數來獲得唯一的索引值。對于字符串鍵,哈希函數可能要復雜得多有些方法包括將字符串中每個字符的數值相加,然后除以某個數字,或者只使用字符串的前幾個字符來獲得唯一的數字。從字符串中派生數字的方法有很多種。當處理關聯數組中的大量鍵值對時,一個可能出現的問題稱為沖突。當從一個鍵派生的整數索引與另一個鍵的整數索引相同時,就會發生沖突。然后這兩個鍵就有效地指向值數組中的同一個索引。有各種解決沖突的方法,主要是因為在大多數實際應用中,它發生的概率很高,一種解決沖突的方法是讓每個值索引實際上都是一個鏈表,這樣,當多個鍵解析到該索引位置時,該位置可以容納多個值。這稱為鏈接,是處理沖突的一種簡單方法,雖然它也可以減慢檢索信息的時間。另一種處理沖突的方法叫做線性探測。當發生沖突時,線性探測通過在值數組中移動直到找到未使用的索引來工作。這種方法有助于保持數據在關聯數組中的均勻分布,但它也會增加查找值所需的時間
-
發表于 2020-08-06 08:43
- 閱讀 ( 1354 )
- 分類:電腦網絡