c# - 哈希表/字典冲突

标签 c# string math dictionary hashtable

仅使用标准的英文字母和下划线,最多可以使用多少个字符而不会在哈希表/字典中引起潜在的冲突。

所以字符串像:

blur
Blur
b
Blur_The_Shades_Slightly_With_A_Tint_Of_Blue

...

最佳答案

不能保证您不会在单个字母之间发生冲突。

可能不会,但未指定 string.GetHashCode 中使用的算法,并且可能会更改。 (特别是它在 .NET 1.1 和 .NET 2.0 之间发生了变化,这激怒了认为它不会发生变化的人。)

请注意,哈希码冲突不会阻止设计良好的哈希表工作——您仍然应该能够得到正确的值,它可能只需要使用相等性检查多个键,如果它们有相同的哈希码。

任何依赖哈希码唯一性的字典都缺少关于哈希码的重要信息,IMO :)(除非它在非常特定条件下运行,它绝对知道它们'将是唯一的,即它使用 perfect hash function 。)

关于c# - 哈希表/字典冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735317/

相关文章:

C#接口(interface)继承到抽象类

Python:倒序单词

java - 如何在 Java 中比较字符串?

ruby 强制对实数进行整数除法

javascript - 动态填充表的总和值

javascript - 使用 JS 考虑旋转调整多个对象的大小

c# - 如何在图表中设置系列 Z-Order

c# - 使用 Mongo C# 驱动程序序列化不可变值类型

python - 字符串替换组合

c# - 如何告诉 EF Code First 仅删除使用 DbSet 定义的表而不删除同一数据库中的其他表(Memberhisp 表)?