gpt4 book ai didi

.NET "invertible"字典,其中键和值是可交换的

转载 作者:行者123 更新时间:2023-12-05 00:39:42 25 4
gpt4 key购买 nike

是否有任何 .NET 类型可以表示一组键值对,其中每个键仅与单个值配对(如常规 Dictionary ),但每个值也仅与单个键配对?我一直认为这是一个“可逆”字典,因为您可以将键与值交换而不会发生任何冲突。编写这样的类并为给定值添加诸如“TryGetKey”之类的方法应该不难。但是,我想检查一下这样的东西是否已经存在于某个地方,也许是我没有想到的其他名称。

另外,考虑到 this question 的优雅回答,当我可以轻松地使用 LINQ 将任何字典转换为其等效的值键时,创建一个类来表示这个可逆字典是否值得?

最佳答案

我不相信框架中有一个类可以直接执行此操作。

Also, considering the elegant answer to this question, would it be worthwhile for me to create a class to represent this invertible dictionary, when I could just as easily use LINQ to convert any dictionary to its value-key equivalent?



您的两个问题的答案实际上取决于您将如何访问您的数据。如果您需要基于键和值的快速、恒定时间访问,您很可能想要创建自己的集合。

不过,这可以非常、非常容易地完成。只需在你的类中包装两个 Dictionary 实例,当你添加一个新元素时,添加到两者中 - 一个带有键/值,一个带有值/键。您的查找例程可以从适当的集合中提取,并且在访问时间上将保持在 O(1) 附近。

但是,如果内存更受关注,您可以只使用一个集合,并使用 LINQ 来解析它。这将使您的“反向”查找速度变慢,因为您每次都需要重新解析。

关于.NET "invertible"字典,其中键和值是可交换的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3806614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com