Dictionary個人理解

2022-07-24 01:15:25 字數 806 閱讀 5155

dictionary原理個人總結:

* 微軟實現

* 賦值:

* 1.將key用hash函式計算(類似md5)

* 2.將hash結果取餘放入hash桶(聽起來很高大上,就是放入不同陣列,類似hash表)

* * 取值:賦值過程差不多,取值時間複雜度基本為1。

* 理解本質:取餘計算後,直接取陣列下標。如果下標多個值,再指向乙個鍊錶裝資料。

缺點:1.需要記憶體空間比較大。

2.插入存在擴容。

下面為和list對比測試結果:

**:

using

system;

using

system.collections.generic;

using

system.diagnostics;

using

system.linq;

using

system.text;

using

system.threading.tasks;

namespace

dicfind();

listfind();

}public

void

dicfind()

public

void

listfind()}}

10個資料:

1000個資料:

100000個資料

10000000個資料

從測試結果總結:dictionary隨著資料量增大,計算次數是沒有多大變化的。這就是資料結構做的好,比如二分查詢和遍歷查詢的區別。

GRASP個人理解

這裡是一篇比較全面的概覽 個人比較注重 開閉原則 對擴充套件開發對修改關閉 變與不變的分離 將變化的部分和不變的部分分開 組合 聚合復用原則 盡量使用類的組合復用,不要使用繼承 還有即使高內聚低耦合 實際上著名的gof模式也不盡都對這些原則遵循的很好,如訪問者模型,將原被訪問者的部分內部邏輯分離出去...

ThreadLocal個人理解

為了加深理解,將最近對threadlocal的了解和原始碼分析記錄總結一下。threadlocal可以為執行緒提供區域性變數。使用threadlocal的get 方法,可以在當前執行緒能夠訪問的類和方法中,得與當前執行緒相關聯的變數值。不過,執行緒區域性變數並不是由threadlocal物件儲存維護...

JavaScript this個人理解

一.呼叫公共函式,this預設指向的為window 直接上幾個 1.var a 10 function test test 結果10 2.var a 10 function test function test1 test 結果 10 10 3.var a 10 function test test...