2013-01-02 67 views
-1

示例: NSMutable * Array1包含1,2。 NSMutable * Array2包含2,1。如何檢查兩個NSMutableArray具有相同的整數而不考慮順序

當我們比較這兩個Array時,上面的條件應該返回True。請幫助我這樣做。謝謝。

+0

數組將包含對象,並且具有相同值「country」的兩個對象不能相同!是亞洲* a = @「國家」和歐洲* e = @「國家」。這裏不能相同。所以拿這個比較問題。如果你只存儲整數,那麼它很好。 –

回答

1

首先排序都排列在升序這樣

NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES]; 
[array1 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]]; 
[array2 sortUsingDescriptors:[NSArray arrayWithObject: sortOrder]]; 

,然後只需陣列的比較結果爲

return ([array1 isEqualToArray:array2]); 
1

你可以寫類似:

BOOL areEqual = array1.count == array2.count; 
if (areEqual) { 
    NSMutableArray *array3 = [NSMutableArray arrayWithArray:array2]; 
    for (NSNumber *number in array1) { 
    [array3 removeObject:number]; 
    } 
    if (array3.count > 0) { 
    areEqual = NO; 
    } 
} 
0

試試這個:

這裏我返回BOOL,並打印爲1(是),0(否)。如果您想返回True和False,請通過comparyArray:withArray:method中的if-else重新執行。

- (BOOL)compareArray:(NSArray *)first withArray:(NSArray *)second{ 
    first=[first sortedArrayUsingSelector:@selector(compare:)]; 
    second=[second sortedArrayUsingSelector:@selector(compare:)]; 
    return [first isEqualToArray:second]; 
} 

- (void)anyMethod{ 
    NSArray *[email protected][@1,@2,@3]; 
    NSArray *[email protected][@3,@1,@21];   
    NSLog(@"Compare result is %d",[self compareArray:arr1 withArray:arr2]); 
} 
+0

如果arr1是1,1,2和arr2是2,1.你的方法會說它們是相似的。 – Levi

+0

好的,我以爲他想比較每個元素,現在我得到了更清楚的問題... –

+0

更新瞭解決方案 –

0

如果您可以假設重複被刪除(​​通過NSArray>NSSet),那麼陣列可以比較如下:

BOOL equal = [[NSSet setWithArray:array1] isEqualToSet:[NSSet setWithArray:array2]]; 

兼顧您的數組的大小了。

相關問題