我有 2 个 nsarray,具有相同的值但顺序不同。
NSArray * array1 = {0,1,2,3}
NSArray * array2 = {2,3,1,0}
我需要一种方法来确定两个数组是否具有不同顺序的相同值。
种类
-(BOOL) isSameValues:(NSArray*)array1 and:(NSArray*)array2;
最佳答案
您可以为此目的使用 NSCountedSet
:
- (BOOL)isSameValues:(NSArray*)array1 and:(NSArray*)array2
{
NSCountedSet *set1 = [NSCountedSet setWithArray:array1];
NSCountedSet *set2 = [NSCountedSet setWithArray:array2];
return [set1 isEqualToSet:set2];
}
NSCountedSet
是不同对象的集合,其中每个对象都有一个关联的计数器。因此结果为
NSArray *array1 = @[@0,@1,@2,@3];
NSArray *array2 = @[@2,@3,@1,@0];
是YES
,但是对于
NSArray *array1 = @[@1,@1,@3,@3];
NSArray *array2 = @[@3,@3,@3,@1];
结果是NO
。
关于objective-c - 比较具有相同值但顺序不同的两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15709494/