dub*_*eat 1 objective-c nsarray ios
如何在NSArray上执行自定义排序操作.我有一个字符串数组,这是我想要的订单.
NSArray A = {cat, dog, mouse, pig, donkey}
Run Code Online (Sandbox Code Playgroud)
我有一个字符串数组,没有按我想要的方式排序.
NSArray B = {dog,cat,mouse,donkey,pig}
Run Code Online (Sandbox Code Playgroud)
什么是最好的方式将阵列B放在与阵列A相同的顺序而不必使用密钥?
这是一种方式
NSArray *sortedArray = [B sortedArrayUsingComparator: ^(id obj1, id obj2){
NSUInteger index1 = [A indexOfObject: obj1];
NSUInteger index2 = [A indexOfObject: obj2];
NSComparisonResult ret = NSOrderedSame;
if (index1 < index2)
{
ret = NSOrderedAscending;
}
else if (index1 > index2)
{
ret = NSOrderedDescending;
}
return ret;
}];
Run Code Online (Sandbox Code Playgroud)
上面将B的元素排序为与A相同的顺序,其中元素在B中但不在A中出现在末尾(因为它NSNotFound是一个非常大的数字).该算法的唯一问题是,它乘以排序的算法复杂度O(n),其中n是A.对象的数量因此对于大的A这将是相当缓慢.
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |