6

classには、 2 つの配列を比較して一致するかどうかを示すNSArrayメソッドがあります。isEqualToArray:

要素の順序が異なる 2 つの配列があります。例えば:

NSMutableArray* arr1 = [@[@"one", @"two", @"three"] mutableCopy];
NSMutableArray* arr2 = [@[@"three", @"one", @"two"] mutableCopy];

BOOL same = [arr1 isEqualToArray:arr2];
NSLog(@"%d", same);

上記の例では、arr1arr2は同じ要素を持っていますが、isEqualToArray:を返してNOいます。for/whileループ内の各要素を反復せずに、上記のように2つの配列を比較するにはどうすればよいですか?

4

2 に答える 2

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];
于 2013-03-31T17:27:20.767 に答える
3

両方の配列を並べ替えて、結果を試した方法と比較することをお勧めします。

于 2013-03-31T17:33:26.537 に答える