首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板