objective-c - 比较具有相同值但顺序不同的两个数组

标签 objective-c nsarray

我有 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/

相关文章:

objective-c - 鼠标悬停时的 NSPopOver

objective-c - 在后台线程上加载 Nib

ios - [UIImage imageWithRenderingMode :]: unrecognized selector sent to instance

ios - 如何从 NSArray : 添加项目

ios - 有没有更好的方法来展平 NSDictionaries 的 NSArray?

c++ - Box2d反重力问题

ios - 在 Xcode 中构建时位码签名无效

objective-c - 当 NSArray 元素被释放时会发生什么?

ios - 在iOS中将一个数组添加到另一个数组

iphone - NSArray removeObjectAtIndex 错误