雜湊表集合型別 MSDN

2021-09-30 02:19:28 字數 801 閱讀 6530

雜湊表集合型別

hashtable 類基於 idictionary 介面,因此該集合中的每一元素是鍵和值對。

hashtable 由包含集合元素的儲存桶組成。儲存桶是 hashtable 中各元素的虛擬子組,與大多數集合中進行的搜尋和檢索相比,它可令搜尋和檢索更簡單、更快速。每一儲存桶都與乙個雜湊**關聯,該雜湊**是使用雜湊函式生成的並基於該元素的鍵。

雜湊函式是基於鍵返回數值雜湊**的演算法。鍵是正被儲存的物件的某一屬性的值。雜湊函式必須始終為相同的鍵返回相同的雜湊**。乙個雜湊函式能夠為兩個不同的鍵生成相同的雜湊**,但從雜湊表檢索元素時,為每一唯一鍵生成唯一雜湊**的雜湊函式將令效能更佳。

在 hashtable 中用作元素的每一物件必須能夠使用 object.gethashcode 方法的實現為其自身生成雜湊**。但是,還可以通過使用 hashtable 建構函式(該建構函式將 ihashcodeprovider 實現作為其引數之一接受),為 hashtable 中的所有元素指定乙個雜湊函式。

在將乙個物件新增到 hashtable 時,它被儲存在儲存桶中,該儲存桶與匹配該物件的雜湊**的雜湊**關聯。在 hashtable 內搜尋乙個值時,為該值生成雜湊**,並且搜尋與該雜湊**關聯的儲存桶。

例如,乙個字串的雜湊函式可以採用該字串中每一字元的 ascii **並它們新增到一起來生成乙個雜湊**。字串「picnic」將具有與字串「basket」的雜湊**不同的雜湊**;因此,字串「picnic」和「basket」將處於不同的儲存桶中。與之相比,「stressed」和「desserts」將具有相同的雜湊**並將處於相同的儲存桶中

雜湊表 雜湊集合(bitmap)

之前我們提到了雜湊集合的樸素實現。你要知道雜湊表的乙個重要思想就是使用空間換時間。他引入了乙個用作桶的陣列。所以我們可以通過o 1 的時間 雜湊函式進行插入和檢索。不過這種做法空間的浪費太嚴重了,注意到我們c 中使用hash來實現的set,是不能儲存重複元素的。在這種背景下,我們使用乙個int的空間...

雜湊表 雜湊集合(樸素實現)

在實際程式設計中,我們常常面臨著兩個問題 儲存和查詢,這兩個過程的效率往往制約著整個程式的效率,而我們常見的儲存資料的資料結構比如線性表,樹,圖等,資料在結構中的位置往往是不明確的,當我們在這些資料結構中要查詢乙個資料,都避免不了去執行查詢演算法,去遍歷資料結構,拿關鍵字和結構中的資料進行一一比較,...

java 集合9 雜湊表

hashset 由雜湊表支援 雜湊表 原理 開闢乙個陣列空間儲存元素,假設儲存的是字串,先通過乙個演算法算出乙個值 雜湊值 將這個值作為元素在陣列中的位置,當我們在查詢時,只要將元素通過演算法算出相應的雜湊值,在陣列的角標範圍內,這個值在容器中就是存在的,如果算出的值不是陣列的角標,那麼這個元素在陣...