我知道排序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