首頁 > 後端開發 > C++ > 如何管理 .NET 字典中的重複鍵?

如何管理 .NET 字典中的重複鍵?

Patricia Arquette
發布: 2024-12-30 18:21:09
原創
478 人瀏覽過

How Can I Manage Duplicate Keys in .NET Dictionaries?

管理 .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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板