我需要使用数字(长整型)列表作为字典键,以便对它们进行一些分组计算。
当直接使用长数组作为键时,我遇到了很多冲突。如果我使用 string.Join(",", myLongs) 作为键,它会按照我的预期工作,但速度要慢得多(我认为,因为哈希更复杂)。
这是一个演示我的问题的示例:
Console.WriteLine("Int32");
Console.WriteLine(new[] { 1, 2, 3, 0}.GetHashCode());
Console.WriteLine(new[] { 1, 2, 3, 0 }.GetHashCode());
Console.WriteLine("String");
Console.WriteLine(string.Join(",", new[] { 1, 2, 3, 0}).GetHashCode());
Console.WriteLine(string.Join(",", new[] { 1, 2, 3, 0 }).GetHashCode());
输出:
Int32
43124074
51601393
String
406954194
406954194
如您所见,数组返回不同的哈希值。
有没有办法既能获得长数组哈希的性能,又能获得字符串哈希的唯一性?
请参阅下面我自己的答案,了解所有建议的性能比较。
关于潜在的重复- 该问题有很多有用的信息,但由于这个问题主要是关于寻找高性能替代方案,我认为它仍然提供了一些此处未提及的有用解决方案。
一只甜甜圈
慕妹3242003
12345678_0001
慕村225694
慕码人2483693
相关分类