在类NSArray
中,有一个方法isEqualToArray:
,它比较两个数组并指示它们是否匹配。
我有两个阵列,它们的元素顺序不同。例如:
NSMutableArray* arr1 = [@[@"one", @"two", @"three"] mutableCopy];
NSMutableArray* arr2 = [@[@"three", @"one", @"two"] mutableCopy];
BOOL same = [arr1 isEqualToArray:arr2];
NSLog(@"%d", same);
在上面的示例中,即使arr1
和arr2
具有相同的元素,isEqualToArray:
也会返回NO
。如何在不迭代for
/ while
循环中的每个元素的情况下比较上面提到的两个数组?
答案 0 :(得分:8)
使用NSSet
然后进行比较。
NSSet *set1=[NSSet setWithArray:arr1];
NSSet *set2=[NSSet setWithArray:arr2];
BOOL same=[set1 isEqualToSet:set2];
编辑:
如果您在arr1和arr2中有重复项,请使用:
NSCountedSet *set1=[NSCountedSet setWithArray:arr1];
NSCountedSet *set2=[NSCountedSet setWithArray:arr2];
BOOL same=[set1 isEqualToSet:set2];
答案 1 :(得分:3)
我建议你对两个数组进行排序,并将结果与你尝试过的方法进行比较。