目標は、2 つの配列を比較して、同じオブジェクトが含まれているかどうかを確認することです (できるだけ早く - 配列に多くのオブジェクトがあります)。isEqual:
並べ替えが異なるため、配列をチェックすることはできません。
ここに投稿されたソリューションを既に試しました ( https://stackoverflow.com/a/1138417 - Peter Hosey による投稿の最後のコード スニペットを参照)。しかし、これは別の方法でソートされた配列では機能しません。
私が現在使用しているコードは次のとおりです。
+ (BOOL)arraysContainSameObjects:(NSArray *)array1 andOtherArray:(NSArray *)array2 {
// quit if array count is different
if ([array1 count] != [array2 count]) return NO;
BOOL bothArraysContainTheSameObjects = YES;
for (id objectInArray1 in array1) {
BOOL objectFoundInArray2 = NO;
for (id objectInArray2 in array2) {
if ([objectInArray1 isEqual:objectInArray2]) {
objectFoundInArray2 = YES;
break;
}
}
if (!objectFoundInArray2) {
bothArraysContainTheSameObjects = NO;
break;
}
}
return bothArraysContainTheSameObjects;
}
これは機能しますが、これらは 2 つのネストされた高速列挙です。比較を高速化する方法はありますか?