2014-04-16 49 views
0

以下是我需要做的事情。將NSArray1的對象與NSArray2進行比較

NSArray中有10個對象

NSArray2具有相同的10個對象,但在不同的索引。

我需要比較如果NSArray1索引:5匹配NSArray2索引:5如果不告訴我,如果對象已在NSArray2中向上或向下移動,對於該數組內的每個其他對象相同。

對象具有以下屬性:id和name。

有關我如何完成此任務的任何建議?

+0

這個家庭作業?你是通過姓名還是身份證來比較他們? – PCoder123

+0

這聽起來像是人們在面試中會遇到的那種問題。 –

+0

沒有它實際上是我自己的應用程序,我需要這個:p – user3504848

回答

1

如果你有內存的話,你可以建立從對象的ID其指數在陣列1的地圖,然後掃描陣列2和比較,如:

NSMutableDictionary *map = [[NSMutableDictionary alloc] init]; 
for (NSUInteger j = 0; j < array1.count; j++) { 
    id object = array1[j]; 
    map[object.id] = @(j); 
} 
for (NSUInteger j = 0; j < array2.count; j++) { 
    id object = array2[j]; 
    id identifier = object.id; 
    NSUInteger array1Index = [map[identifier] unsignedIntegerValue]; 
    // Compare array1Index to j here. 
} 

這會讓你有一個比較運行時間與陣列中的對象數量一樣增長,但請注意,您必須花費一些額外的RAM來製作該map。如果你願意花更多的時間,你可以用唯一不變的RAM成本比較:

for (NSUInteger j = 0; j < array1.count; j++) { 
    id object = array1[j]; 
    NSUInteger k = [array2 indexOfObject:object]; 
    // Compare j and k, note that k could be NSNotFound. 
} 

,並應具有變得像數組數的乘積運行時間。

相關問題