ご存知のように、NSDictionary は順序付けされていません。ただし、キーが数字の場合、辞書が印刷されるときは昇順で印刷されます。私は何度も試しました。
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 に答える