【发布时间】:2013-08-06 17:54:12
【问题描述】:
本质上,我想要一个类似于 Dictionary 的数据结构,但不同之处在于它的值也是唯一的。换句话说,它描绘了一对一的关系,而不是一对多的关系。
一个例子应该更好地解释。假设我将这个新的数据结构称为 MyMapping,并且我想在其中保存已婚夫妇的姓名:
MyMapping<string, string> myMapping = new MyMapping<string, string>();
myMapping.Add("Joe", "Ann");
myMapping.Add("Ann", "Joe");// not allowed
myMapping.Add("Joe", "Mary");// not allowed
myMapping.Add("William", "Katie");// ok
string partner = myMapping["Ann"];// result is Joe
partner = myMapping["Joe"];//result is Ann
【问题讨论】:
-
请注意,在此特定示例中,添加
Dictionary<string, Couple>并将两个名称映射到同一个Couple对象可能会更好... -
+1 对阿列克谢的回答,但即便如此,世界上还有不止 1 个“乔”,所以你可能想要
Dictionary<string, List<Couple>> -
只用两个字典。
-
正如 Hans Passant 所说,使用两本字典。您可以将其包装成一个类,如下所示stackoverflow.com/a/255638/187697
-
@lukegravitt 但不允许第二次添加 Joe(参见 Joe, Mary 条目)。所以乔只得到一个映射。
标签: c# data-structures dictionary