在大多数编程语言中,字典比散列表更受欢迎.这背后的原因是什么?
我注意到getHashCode()WP7中的每个控件都有一个方法,它返回一个数字序列.我可以使用此哈希码来识别项目吗?例如,我想识别设备中的图片或歌曲,并将其检查到哪里.如果为特定项目提供的哈希码是唯一的,则可以这样做.
你能帮我解释一下hashCode是什么getHashCode()用的吗?
我只是很好奇,因为我猜它会影响性能.它是否考虑完整的字符串?如果是,长字符串会很慢.如果它只考虑字符串的一部分,它将具有不良的性能(例如,如果它只考虑字符串的开头,如果HashSet主要包含具有相同的字符串,则它将具有不良性能.
我想知道特定于.Net框架的字符串实习的过程和内部.还想知道使用实习的好处以及我们应该使用字符串实习来提高性能的场景/情况.虽然我已经从Jeffery Richter的CLR书中学习实习,但我仍然感到困惑,并希望更详细地了解它.
[编辑]使用示例代码询问具体问题如下:
private void MethodA()
{
string s = "String"; // line 1 - interned literal as explained in the answer
//s.intern(); // line 2 - what would happen in line 3 if we uncomment this line, will it make any difference?
}
private bool MethodB(string compareThis)
{
if (compareThis == "String") // line 3 - will this line use interning (with and without uncommenting line 2 above)?
{
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud) 我一直用c ++和java编写我的生活,但在C#上,我觉得这是一个完全不同的动物.
如果在c#中的Dictionary容器中发生哈希冲突,它会做什么?或者它甚至检测到碰撞?
在SDL中类似容器中发生冲突的情况下,有些会使键值部分将数据链接到键值部分,如链表,或者有些人会尝试找到不同的哈希方法.
[2010年6月4日上午10:56更新]
我试图为每个用户制作一个计数器.并且设置用户#没有定义,它可以增加或减少.我期待数据的大小超过1000.
所以,我想:
Hashmap是我的解决方案,似乎Dictionary与c#中的hashmap相似...
我想知道GetHashCode()在string实例上调用方法时获取重复值的可能性.例如,根据这篇博文, blair并brainlessness在x86机器上具有相同的哈希码(1758039503).
可能重复:
hashCode用于什么?这是独特的吗?
我生成了很多字符串,然后我的问题是:
2个不同的字符串可以在C#中使用相同的哈希码吗?
通过哈希码我的意思是:
string s = "Hello";
s.GetHashCode();
Run Code Online (Sandbox Code Playgroud)
我的问题更多的是关于C#遵循生成字符串的算法,也许当所有其他哈希码已经生成或者可能不生成时会发生冲突.有可能有人有这个答案.