NSArray 的子数组的排序 NSIndexSet
Sorted NSIndexSet of sub array of NSArray
假设我有 NSIndexSet
个数组索引。
我想根据 NSArray
.
对 NSIndexSet
进行排序
所以,假设我们有数组:
array = @[1,4,3,8,6,2,9];
和索引集
indexSet : (2,4,5,6)
所以这个索引的 "sub array" 是
subArray = @[3,6,2,9]
所以我想要的是:
I have :
indexSet : (2,4,5,6)
array = @[1,4,3,8,6,2,9];
return indexSet : (5,2,4,6) --> this are sorted indexes of "sub array".
如何实现?
你达不到你想要的。 NSIndexSet
不维护与索引本身的顺序分开的顺序。它始终按索引顺序排列。
您可以构建一个数字对象数组,将其视为索引。
NSArray* array = /* ... */;
NSMutableArray* indexes = [[NSMutableArray alloc] init];
[indexSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop){
[indexes addObject:@(idx)];
}];
[indexes sortUsingComparator:^NSComparisonResult(NSNumber* obj1, NSNumber* obj2){
NSUInteger index1 = obj1.unsignedIntegerValue;
NSUInteger index2 = obj2.unsignedIntegerValue;
id element1 = array[index1];
id element2 = array[index2];
return [element1 compare:element2];
}];
假设我有 NSIndexSet
个数组索引。
我想根据 NSArray
.
NSIndexSet
进行排序
所以,假设我们有数组:
array = @[1,4,3,8,6,2,9];
和索引集
indexSet : (2,4,5,6)
所以这个索引的 "sub array" 是
subArray = @[3,6,2,9]
所以我想要的是:
I have :
indexSet : (2,4,5,6)
array = @[1,4,3,8,6,2,9];
return indexSet : (5,2,4,6) --> this are sorted indexes of "sub array".
如何实现?
你达不到你想要的。 NSIndexSet
不维护与索引本身的顺序分开的顺序。它始终按索引顺序排列。
您可以构建一个数字对象数组,将其视为索引。
NSArray* array = /* ... */;
NSMutableArray* indexes = [[NSMutableArray alloc] init];
[indexSet enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop){
[indexes addObject:@(idx)];
}];
[indexes sortUsingComparator:^NSComparisonResult(NSNumber* obj1, NSNumber* obj2){
NSUInteger index1 = obj1.unsignedIntegerValue;
NSUInteger index2 = obj2.unsignedIntegerValue;
id element1 = array[index1];
id element2 = array[index2];
return [element1 compare:element2];
}];