概述: 介紹字典是 C# 中使用最廣泛的數據結構之一,提供快速尋找、鍵值對儲存等。本指南探討了該類,解釋了從基本用法到高級方案的復雜性。DictionaryTKey, TValue詞典基礎什麽是字典?字典是鍵值對的集合,其中每個鍵必須是唯一的。當您需要透過唯一鍵尋找值時,通常使用它。建立和初始化:// Empty dictionary var capitals = new Dictionarystring, string(); // Initialized dictionary var fruits = new Dictionaryint, string { { 1, Apple
介紹
字典是 C# 中使用最廣泛的數據結構之一,提供快速尋找、鍵值對儲存等。本指南探討了該類,解釋了從基本用法到高級方案的復雜性。Dictionary<TKey, TValue>
詞典基礎
什麽是字典?
字典是鍵值對的集合,其中每個鍵必須是唯一的。當您需要透過唯一鍵尋找值時,通常使用它。
建立和初始化:
// Empty dictionary
var capitals = newDictionary<string,string>();
// Initialized dictionary
var fruits = newDictionary<int,string>
{
{ 1, "Apple" },
{ 2, "Banana" },
{ 3, "Cherry" }
};
基本操作
添加條目:
capitals.Add("USA", "Washington, D.C.");
capitals.Add("UK", "London");
檢索值:
string ukCapital = capitals["UK"]; // Returns "London"
檢查金鑰:
bool hasUK = capitals.ContainsKey("UK"); // Returns true
刪除條目:
capitals.Remove("UK");
高級概念
遍歷字典:
您可以迴圈存取鍵和/或值(鍵值對):
foreach (var key in capitals.Keys)
Console.WriteLine(key);
foreach (varvaluein capitals.Values)
Console.WriteLine(value);
foreach (var kvp in capitals)
Console.WriteLine($"Country: {kvp.Key}, Capital: {kvp.Value}");
使用以下方法進行值尋找:TryGetValue
當鍵不存在時,不要捕獲異常,而是使用:TryGetValue
if (capitals.TryGetValue("UK", outstring capital))
Console.WriteLine(capital);
else
Console.WriteLine("Key not found.");
字典容量和效能:
該類針對快速尋找進行了最佳化。但是,了解其容量和有助於最佳化效能,尤其是在處理大型詞典時。DictionaryLoad Factor
容量 :字典在不調整大意的情況下可以容納的條目總數。
計數 :字典中的當前條目數。
荷載系數 :與 .CountCapacity
比較器:
預設情況下,字典使用鍵的預設比較器。但是,您可以指定自訂比較器:
var caseInsensitiveDict = newDictionary<string,string>(StringComparer.OrdinalIgnoreCase);
並行詞典:
在多執行緒方案中,可能需要執行緒安全操作。從名稱空間使用。ConcurrentDictionarySystem.Collections.Concurrent
與 LINQ 一起使用:Dictionary
字典與 LINQ 無縫協作,允許強大的查詢:
var filtered = capitals.Where(kvp => kvp.Value.StartsWith("W"))
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
高級詞典型別
SortedDictionary<TKey, TValue>:
按鍵的升序儲存鍵值對。當您需要特定順序的數據時很有用。
ReadOnlyDictionary<TKey, TValue>:
提供字典的唯讀檢視。保護基礎詞典不被修改。
最佳實踐:
使用正確型別的 鍵:鍵在字典中的生存期內應該是不可變的。
註意 :字典不允許使用鍵,但允許使用值。nullnullnull
針對尋找效能進行最佳化 :如果您知道數據的大致大小,請使用該容量初始化字典。
避免頻繁調整 大小:不斷添加超出容量的元素會導致字典調整大小,從而影響效能。
結論:
C# 中的字典是一種多功能且功能強大的工具,非常適合需要按鍵快速尋找的方案。從添加和檢索項的基礎知識到執行緒安全操作和 LINQ 整合的復雜性,掌握字典可以顯著增強 C# 中的數據處理能力。掌握了這些知識,您就可以充分準備充分利用這種基本數據結構。
如果你喜歡我的文章,請給我一個贊!謝謝