9

可能的重复:
是否有允许重复的 Dictionary/SortedList 的替代方法?

我正在寻找一种可以有重复键的字典类。

我搜索了一下,发现 LookUp 类可以用来存储重复键,但是它没有默认构造函数,所以我们不能在没有任何其他对象的情况下初始化它。

但是我最初没有任何这样的对象,我可以从中初始化一个 LookUp 对象。

所以,我的问题是,.Net 框架 3.5 中是否有任何类,其行为类似于 Dictionary,但允许我拥有像 LookUp 这样的重复键?

4

3 回答 3

19

您可以创建一个键值对列表。

List<KeyValuePair<string,int>>
于 2012-11-01T20:10:35.097 回答
12

根据定义,字典永远不能有多个具有相同值的键。(如果您查找一个键,您会返回什么?)即使是您所指的查找,也不允许它。您可以做的是让每个键引用多个值(逻辑上,而不是技术上)。这是通过拥有一个字典来完成的,其中值是某种数据结构(例如,a List),其中包含与该特定键对应的所有值。

于 2012-11-01T20:10:48.570 回答
3

您可以使用列表字典自己编写类型,Dictionary<TKey, List<TValue>>

您可以创建一个从该类继承的类,并添加合适的添加方法等来处理为给定键上的第一项创建新列表。

于 2012-11-01T20:14:20.107 回答