當前位置: 妍妍網 > 碼農

C# Dictionary:從基礎到高級的全面探索

2024-03-17碼農

概述: 介紹字典是 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>:

    提供字典的唯讀檢視。保護基礎詞典不被修改。

    最佳實踐:

    1. 使用正確型別的 鍵:鍵在字典中的生存期內應該是不可變的。

    2. 註意 :字典不允許使用鍵,但允許使用值。nullnullnull

    3. 針對尋找效能進行最佳化 :如果您知道數據的大致大小,請使用該容量初始化字典。

    4. 避免頻繁調整 大小:不斷添加超出容量的元素會導致字典調整大小,從而影響效能。

    結論:

    C# 中的字典是一種多功能且功能強大的工具,非常適合需要按鍵快速尋找的方案。從添加和檢索項的基礎知識到執行緒安全操作和 LINQ 整合的復雜性,掌握字典可以顯著增強 C# 中的數據處理能力。掌握了這些知識,您就可以充分準備充分利用這種基本數據結構。

    如果你喜歡我的文章,請給我一個贊!謝謝