我有比较大量的字符串数据(csv文件)的问题。这些文件具有唯一标识符,但没有排序,它们非常大。.Net C#String.GetHashCode()替代
所以我试图创建两个字典,其中key是来自文件的uniqueID,Value是int,它返回我感兴趣的字符串的GetHashCode()。
但是,简单的例子:
if ("30000100153:135933:Wuchterlova:335:2:Praha:16000".GetHashCode() ==
"30000263338:158364:Radošovická:1323:10:Praha:10000".GetHashCode())
{
Console.WriteLine("Hmm that's strange");
}
那么,有没有任何其他方式如何做到这一点。
我需要尽可能少footprit尽可能(由于以下两个dictionarie两个CSV文件中的内存分配,其中包含有关3M行) 谢谢
我想你会发现这个线程有趣!http://stackoverflow.com/questions/735317/hashtable-dictionary-collisions –
散列码不是唯一的。它们根本不可能,因为即使在长度为3((2^16)^ 3 = 2^48)的字符串中,可能的字符串值也比可能的散列值(2^32)多。 –
'GetHashCode'实现针对速度而不是唯一性进行了优化。如果您希望将冲突风险降至最低,请改用加密函数(如SHA)。 – Douglas