我知道排序NSDictionary的正確方法是從鍵創建一個數組,對數組進行排序,然後枚舉整個數組,然後從那裏操作NSDictionary。我的問題是,對於一個NSDictionary *字典,用鑰匙和字符串的值,爲什麼NSDictionary在內存中是按字母順序排列的,但不是在枚舉中?
這是爲什麼字母:
NSLog(@"%@", dict);
但是,這並不:
for (NSString *w in dict)
{
NSLog(@"%@", w);
}
似乎很奇怪...難道我做錯了什麼?
在此先感謝。
啊,這是有道理的。我沒有想到NSLog的%@正在進行排序。謝謝! – iBuys 2010-11-20 16:22:04
I.e.法官本質上是無序的。 – bbum 2010-11-21 20:37:48
字典只是一個將一個值映射到另一個值的集合的接口。它不一定是無序的。例如,我可以從二叉樹中創建一個字典 - 在這種情況下,它將被排序。在C++中,std :: map有一個字典界面,並且是有序的。哈希表是無序的,所以用一個哈希表構成的字典也是。 – 2010-11-21 21:05:56