前沿
近期項目中需要給自定義的驅動增加一個功能存儲相關的數據信息。結合實際業務層面,最終決定采用哈希表的結構來存儲。因為其具備快速查找,插入和刪除。其實現原理通過散列函數映射到指定位置。時間復雜度O(1).而且運算速度也快,很適合處理大量的數據場景。但是其也有一些缺點。其擴展性比較差,當數組滿載性能會下降,另外還存在key沖突的情景。思量后,結合本地實現的功能還是決定采取該數據結構來實現相關功能。剛好內核提供了哈希相關的實現,如此甚好,直接拿來使用。但是具體如何實現的,看下正文描述。
一.哈希表結構
1.單向哈希表結構。
如圖:
上圖表示的是通常使用的哈希表結構,好似門簾一樣,也俗稱哈希掛鏈。實際使用中通過哈希算法計算出當前的位置,直接將數據存儲到對應的位置。如果產生哈希沖突(計算的key相同)那么就往當前的位置掛鏈節點。如此做法適合大量數據頻繁查找,插入,刪除的場景。當然前沿中也描述了相關的缺點,所以需要結合實際情況來綜合考量采取那種結構。
代碼結構定義: