首页 > 后端开发 > C++ > 如何检索与通用字典中的单个值关联的多个键?

如何检索与通用字典中的单个值关联的多个键?

Mary-Kate Olsen
发布: 2025-01-21 03:42:10
原创
710 人浏览过

How Can I Retrieve Multiple Keys Associated with a Single Value in a Generic Dictionary?

从泛型字典中检索给定值的多个键

使用索引器语法从 .NET 泛型字典中基于给定键检索值非常简单。但是,由于可能存在多个键具有相同的值,因此检索与指定值对应的键可能会更具挑战性。

介绍 BiDictionary 数据结构

为了解决这个问题,开发了 BiDictionary 数据结构,允许在键和值之间进行双向映射。它维护两个内部字典:

  • firstToSecond:将第一类型键映射到第二类型值的列表。
  • secondToFirst:将第二类型值映射到第一类型键的列表。

实现细节

BiDictionary 类提供方法来添加键值对并基于任一键类型检索值。例如:

<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
greek.Add(5, "Beta");

IList<int> betaKeys = greek["Beta"]; // 返回 [2, 5]</code>
登录后复制

该实现使用空列表作为不存在键的默认返回值,确保您始终收到一个列表,即使它是空的。

可自定义索引器

为方便起见,BiDictionary 包括可自定义的索引器,这些索引器可根据调用键类型直接访问内部字典。这通过允许您使用索引器语法来简化对值的访问:

<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");

string secondGreek = greek[2]; // 返回 "Beta"</code>
登录后复制

示例用法

提供的代码演示了 BiDictionary 的功能:

<code class="language-csharp">BiDictionary<int, string> greek = new BiDictionary<int, string>();
greek.Add(1, "Alpha");
greek.Add(2, "Beta");
greek.Add(5, "Beta");

ShowEntries(greek, "Alpha"); // 打印 "Alpha: [1]"
ShowEntries(greek, "Beta"); // 打印 "Beta: [2, 5]"
ShowEntries(greek, "Gamma"); // 打印 "Gamma: []"</code>
登录后复制

此示例演示了如何检索与给定值对应的键,并且它通过返回空列表优雅地处理不存在的值的情况。

以上是如何检索与通用字典中的单个值关联的多个键?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板