如何在NSArray上执行自定义排序操作。我有一个字符串数组,这是我想要的顺序。
NSArray A = {cat, dog, mouse, pig, donkey}
而且我有一个字符串数组,没有按照我想要的方式排序。
NSArray B = {dog,cat,mouse,donkey,pig}
将数组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;
}];
上面的代码将B的元素按与A相同的顺序排序,并且B中的元素出现在末尾,但A中的元素没有出现在最后(因为
NSNotFound
是一个很大的数字)。该算法的唯一问题是它将排序的算法复杂性乘以O(n)
,其中n
是A中的对象数。因此,对于大A来说,它的运行速度将非常慢。
关于objective-c - 如何在NSArray上使用自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11793578/