1

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

4

1 に答える 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 に答える