作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题需要 details or clarity 。它目前不接受答案。
想改进这个问题?添加详细信息并通过 editing this post 澄清问题。
8年前关闭。
Improve this question
在调试器中运行此代码,然后停止(我在 Xcode 5.0.1 的 iOS 7 模拟器中)。
NSString *nsStr = @"/Users/123456789012/Library/Application Support/iPhone Simulator/7.0/Applications/94F31827-6DAD-4BD5-AC91-B215176265E1/Documents/libraries/shared/17517_abPub/OEBPS/indexes/Index.sqlite";
NSString *nsStr2 = @"/Users/123456789012/Library/Application Support/iPhone Simulator/7.0/Applications/94F31827-6DAD-4BD5-AC91-B215176265E1/Documents/libraries/shared/16583_abPub/OEBPS/indexes/Index.sqlite";
NSUInteger form1 = [nsStr hash];
NSUInteger form2 = [nsStr2 hash];
NSMutableDictionary *dict = [[[NSMutableDictionary alloc]init]autorelease];
[dict setObject:@"foo" forKey:nsStr];
id foobar = [dict objectForKey:nsStr2];
form1
和
form2
是相同的。我们有一个哈希冲突。另请注意,
foobar
是
nil
。哈希冲突不会困扰
NSDictionary
。为什么是这样?有谁知道苹果正在做什么来避免字典中的哈希冲突/对此有什么好的策略?
最佳答案
一个 hash
值不是唯一的。许多不同的值可以具有相同的哈希值。字典的实现知道这一点。使用哈希只是优化查找的一种方式。但重要的是实际的键值,而不是哈希值。
只要返回 YES
的任意两个对象至isEqual:
也有相同的hash
,一切都很好。
把字典想象成一系列的桶。哈希决定了值在哪个桶中。一旦你知道了桶,你仍然需要寻找确切的键。
关于ios - NSString 哈希冲突不会弄乱 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19281698/
我是一名优秀的程序员,十分优秀!