知其所以然 字典的資料結構

2021-09-07 19:07:32 字數 698 閱讀 8473

dictionary和hashtable用法有點相似,他們都是基於鍵值對的資料集合,但實際上他們內部的實現原理有很大的差異,

先簡要概述一下他們主要的區別,稍後在分析dictionary內部實現的大概原理。

區別:dictionary支援泛型,而hashtable不支援。

dictionary沒有裝填因子(load facto)概念,當容量不夠時才擴容(擴容跟hashtable一樣,也是兩倍於當前容量最小素數,比如當前陣列長度是3,那麼新陣列長度為7(2x3=6,比6大的最小素數是7),hashtable是「已裝載元素」與」bucket陣列長度「大於裝載因子時擴容。

dictionary內部的儲存value的陣列按先後插入的順序排序,hashtable不是。

當不發生碰撞時,查詢dictionary需要進行兩次索引定位,hashtable需一次,。

下面跟上次一樣,按正常使用dictionary時,看內部是如何實現的。

例項化乙個dictionary

dictionarydic=new dictionary();
向dic新增乙個值,dic.add("a","abc");

通過key獲取對應的value, var v=dic["a"];

dictionary裡的其他方法就不說了,各位可以自己去看原始碼,下面來通過實驗來對比hashtable和dictionary的新增和查詢效能,

知其然知其所以然

深深的話我們淺淺地說,長長的路我們慢慢地走。讓我們始終有勇氣特立獨行。不溫不火,不疾不徐。將記憶自拔於困頓的泥沼,將希望播撒於每一寸光陰!生活縱有千千結,還是要繼續下去,時光就是如此的公平。最近總是陷入乙個又乙個的糾結,乙個又乙個的心塞。生活彷彿陷入了恍若隔世的噩夢中,而自己就是噩夢中的小丑一樣,只...

java結果輸出,知其所以然

輸出結果是什麼?為什麼會出現這種結果?一public class parenttest static public class childrentest extends parenttest static public static void main string args 二 true or f...

知其所以然 劉未鵬

這是乙個樹狀的知識結構,越往上層走,需要記憶的節點就越少。所謂觸類旁通者,其實便是因為他擅長去理解解法背後的更具一般性的東西。所以我還有乙個習慣,就是看到美妙的證明和解法總是會去一遍又一遍的去反覆揣摩,試圖理解想出這個證明的人到底是怎麼想出來的,有沒有什麼一般性的方法可循,很多時候,在這樣揣摩的過程...