我有一个NSMutableDictionary
那个映射NSString
to NSString
(尽管这些值是NSStrings
,它们实际上只是整数)。
例如考虑以下映射,
"dog" --> "4"
"cat" --> "3"
"turtle" --> "6"
我希望最终得到字典中按值降序排序的前 10 个条目。有人可以给我看一下代码吗?也许有一个键数组和另一个值数组。不管怎样,我不介意。我只是想让它变得高效。
谢谢你!
获取值的数组,对该数组进行排序,然后获取与该值对应的键。
您可以通过以下方式获取值:
NSArray* values = [myDict allValues];
NSArray* sortedValues = [values sortedArrayUsingSelector:@selector(comparator)];
但是,如果集合如您在示例中所示(我的意思是,您可以从键推断值),您始终可以对键进行排序,而不是弄乱值。
Using:
NSArray* sortedKeys = [myDict keysSortedByValueUsingSelector:@selector(comparator)];
比较器是一个消息选择器,它被发送到您想要订购的对象。
如果你想对字符串进行排序,那么你应该使用 NSString 比较器。
NSString 比较器是:caseInsensitiveCompare 或 localizedCaseInsensitiveCompare:。
如果这些对您都无效,您可以调用自己的比较器函数
[values sortedArrayUsingFunction:comparatorFunction context:nil]
作为比较函数(来自Apple文档)
NSInteger intSort(id num1, id num2, void *context)
{
int v1 = [num1 intValue];
int v2 = [num2 intValue];
if (v1 < v2)
return NSOrderedAscending;
else if (v1 > v2)
return NSOrderedDescending;
else
return NSOrderedSame;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)