众所周知,NSDictionary 是无序的。但是,当键是数字时,在打印字典时,它们是按升序打印的。我已经尝试了很多次。
问问题
67 次
1 回答
1
字典的顺序取决于添加的键对象的哈希方法返回的值。很像,NSNumber 返回它的值,它是用一个整数创建的。在这种情况下,您的观察将是正确的。
更多信息:http ://bynomial.com/blog/?p=73
试试这个代码
NSArray *numbers = @[@0,@1,@2,@3];
for (NSNumber *n in numbers) {
NSLog(@"%ld:%@", (unsigned long)[n hash], n);
}
它产生这个输出
0:0
2654435761:1
5308871522:2
7963307283:3
似乎 Knuth 的哈希算法实现了一半。
原文是
hash(i)=i*2654435761 mod 2^32
这里似乎只是
hash(i)=i*2654435761
于 2013-09-03T00:35:03.960 回答