【发布时间】:2012-01-14 23:32:26
【问题描述】:
我想用Dictionary<Dictionary<char,int>, List<string>> 实现一个算法来查找字典中的字谜单词。
由于我需要为此字典实现我的自定义EqualityComparer,所以访问时间仍然是 O(1),即大 O(1) 吗?
第二个问题,作为EqualityComparer 的一部分,我还需要实现GetHashCode()。为Dictionary<Dictionary<char,int>, List<string>> 确定GetHashCode() 的有效方法是什么?
我只是想出了这个方法,有没有更好的选择?
public int GetHashCode(Dictionary<char, int> obj)
{
unchecked
{
int hashCode = 17;
foreach (var item in obj)
{
hashCode += 23 * item.Key.GetHashCode();
}
return hashCode;
}
}
感谢任何建议。谢谢!
【问题讨论】:
-
具有可变键的字典是痛苦的秘诀
-
但它们不是典型 .net 代码 Ben 中最常见的字典键吗?
-
不是最常见的字典键吗?不,字典和其他集合类型不经常用作其他字典的键。
-
我的错误是我错误地将您的评论视为不可变!所以这让我想知道!是的,我明白你在说什么。
标签: .net generics dictionary big-o iequalitycomparer