管理 .NET 字典中的重複鍵
管理字典中的重複鍵是許多程式設計場景中的常見挑戰。在 .NET 基底類別庫中,字典通常會對鍵強制執行唯一性約束,禁止儲存與相同鍵關聯的多個值。但是,有一些方法可以克服此限制並在某些情況下容納重複的鍵。
使用自訂字典
一種方法是建立一個自訂字典類,該類別允許重複的鍵。如同問題中所提到的,像 Dictionary
.NET 3.5 及更高版本中的Lookup 類別
如果您使用的是.NET 3.5 或更高版本, Lookup 類別提供了更優雅的解決方案方案。 Lookup 類別是一個泛型類型,它會建立鍵及其對應值的集合。重要的是,它允許重複的鍵並對與同一鍵關聯的值進行分組。
您可以使用 Enumerable.ToLookup 擴充方法建立 Lookup 實例。此方法採用一系列鍵值對並傳回一個 Lookup,其中鍵作為主鍵,值儲存在各自的集合中。
var lookup = sequence.ToLookup(keySelector, valueSelector);
例如,以下程式碼從字典,其中鍵是字串,值是整數列表:
var dictionary = new Dictionary<string, List<int>> { { "key1", new List<int> { 1, 2 } }, { "key2", new List<int> { 3, 4 } } }; var lookup = dictionary.ToLookup(x => x.Key, x => x.Value);
一旦有了Lookup 實例,就可以使用[] 存取與鍵關聯的值運算子或GetValues 方法。 [] 運算子傳回值列表,而 GetValues 傳回 IEnumerable
Lookup 類別的限制
需要注意的是 Lookup 類別是不可變的。建立後,您無法新增或刪除鍵或值。但是,您可以建立一個包含所需變更的新 Lookup 實例。此外,Lookup 類別不支援並發修改。如果需要並發訪問,請考慮使用 ConcurrentDictionary。
結論
雖然.NET 基類庫沒有提供明確支援重複的內建字典類型鍵,.NET 3.5 及更高版本中的Lookup 類別提供了一種方便且有效率的解決方案,用於分組和檢索與重複鍵關聯的值。
以上是如何管理 .NET 字典中的重複鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!