程式碼優化--資料字典(dictionary)的使用
<pre class="csharp" name="code"><span style="font-size:18px;"></span>
字典(dictionary)是一個集合,每一個元素都是一個鍵/值對,常用於查詢和排序的列表,且查詢速度非常快。此次程式碼優化過程中使用了資料字典,執行速度有了明顯的提升。
【dictionary基本操作】
1. 必須引用名稱空間:System.Collection.Generic
2. 資料字典定義:
<span style="font-size:18px;"> Dictionary<string, string> openWith = new Dictionary<string, string>();</span>
3. 新增:
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
4. 遍歷:
(1)key或者value值
<span style="font-size:18px;"> foreach (string key in openWith.Keys) { string txt=key; ...}</span>
(2) 遍歷整個字典
foreach (KeyValuePair<string,
string> kvp
in openWith)
{
...
}
5. 刪除元素
openWith.Remove("doc");
6. 根據key值獲得對應的value值
string value=openWith["doc"];
7. 取出value或key值陣列
array arr=openWith.values //直接取出value陣列
array arr=openwith.Keys //直接取出key值陣列
8.搜尋是否包含某key值或某value
openWith.ContainsKey("doc")
openWith.ContainsValue("1");
9. 資料字典清除
openWith.clear
【優勢】
1. 查詢速度快,下圖是從網上找到的對dictionary的執行速度總結:
為什麼執行速度快?
官方解釋:Dictionary 泛型類提供了從一組鍵到一組值的對映。字典中的每個新增項都由一個值及其相關聯的鍵組成。通過鍵來檢索值的速度是非常快的,接近於 O(1),這是因為 Dictionary 類是作為一個雜湊表來實現的。
2. 查詢方式多樣,可任意取出鍵值陣列或者value陣列,可見上面的基本操作8
3. 結構嚴密,value值唯一,且不能為空
4. dictionary VS List
查詢:list是順序儲存,由於儲存結構是順序的,所以查詢起來很費勁;字典是一組鍵到一組值的對映,每個值對應一個關聯的鍵,所以搜尋速度很快;
刪除:list順序儲存,當刪除一個值時,需要移動後續元素;dictionary則像連結串列,刪除時不需要移動後續元素。
【實戰應用】
此次專案的程式碼優化過程中就遇到這樣一個問題:介面要求動態載入教職工姓名和各個評分項。這個介面需要查詢3張表來實現:先根據評論人ID,從設定考評表查閱被評論人ID和設定考評ID,然後根據被評論人ID從教職工表查詢被評論人姓名,從詳細考評表查詢評分專案。
在提交評分的過程中保持這3張表的一致性就成了困難,這時,使用資料字典,在查詢將被評論人ID,設定考評ID,評論人姓名進行繫結,問題就能得到很好的解決:
1. 不用再重複查詢
2. 搜尋速度得到提高
【總結】
在實踐中多接觸一些新鮮血液,擴寬自己的知識面,並在實踐中不斷應用,在以後的程式設計道路上不斷對比總結,總能收穫很多。