我正在寻找哈希表如何工作的解释 - 用像我这样的傻瓜的简单英语!
例如,我知道它需要密钥,计算哈希值(我正在寻找解释如何)然后执行某种模数来计算它存储在存储值的数组中的位置,但这就是我的知识停止的地方.
任何人都可以澄清这个过程吗?
编辑:我没有具体询问如何计算哈希码,而是概述哈希表的工作原理.
如果我有一个Dictionary<String,...>是否有可能使方法ContainsKey不区分大小写?
这似乎是相关的,但我没有理解它:c#Dictionary:通过声明使Key不区分大小写
我想知道比较两个字符的正确方法是什么,而忽略了适用于所有文化的案例.另外,Comparer<char>.Default在不忽略大小写的情况下测试两个字符的最佳方法是什么?这对代理对有用吗?
编辑:添加了示例IComparer<char>实现
如果这有助于任何人这是我决定使用的
public class CaseInsensitiveCharComparer : IComparer<char> {
private readonly System.Globalization.CultureInfo ci;
public CaseInsensitiveCharComparer(System.Globalization.CultureInfo ci) {
this.ci = ci;
}
public CaseInsensitiveCharComparer()
: this(System.Globalization.CultureInfo.CurrentCulture) { }
public int Compare(char x, char y) {
return Char.ToUpper(x, ci) - Char.ToUpper(y, ci);
}
}
// Prints 3
Console.WriteLine("This is a test".CountChars('t', new CaseInsensitiveCharComparer()));
Run Code Online (Sandbox Code Playgroud)